41#include "../tapes/interfaces/editingTapeInterface.hpp"
42#include "misc/enableIfHelpers.hpp"
46 template<
typename Tape,
typename Impl>
47 struct PrimalValueBaseTape;
49 template<
typename Tape,
typename Impl>
50 struct JacobianBaseTape;
52 template<
typename T_Real,
typename T_Gradient>
53 struct ForwardEvaluation;
55 template<
typename T_Real,
typename T_Tag>
56 struct TagTapeForward;
58 template<
typename T_Real,
typename T_Tag>
59 struct TagTapeReverse;
63 namespace TapeTraits {
70 template<
typename Tape,
typename =
void>
73#ifndef DOXYGEN_DISABLE
74 template<
typename Tape>
79 template<
typename Tape>
87 template<
typename Tape>
88 bool constexpr isForwardTape = IsForwardTape<Tape>::value;
92 template<
typename Tape>
96 template<
typename Tape,
typename =
void>
99#ifndef DOXYGEN_DISABLE
100 template<
typename Tape>
108 template<
typename Tape>
109 bool constexpr isPrimalValueTape = IsPrimalValueTape<Tape>::value;
113 template<
typename Tape>
117 template<
typename Tape,
typename =
void>
120#ifndef DOXYGEN_DISABLE
121 template<
typename Tape>
129 template<
typename Tape>
130 bool constexpr isJacobianTape = IsJacobianTape<Tape>::value;
134 template<
typename Tape>
137 template<
typename Tape,
typename =
void>
140#ifndef DOXYGEN_DISABLE
142 template<
typename Tape>
144 typename std::enable_if<IsJacobianTape<Tape>::value || IsPrimalValueTape<Tape>::value>::type>
147 template<
typename Tape>
148 struct IsReverseTape<
155 template<
typename Tape>
156 bool constexpr isReverseTape = IsReverseTape<Tape>::value;
160 template<
typename Tape>
163 template<
typename Tape,
typename =
void>
166#ifndef DOXYGEN_DISABLE
167 template<
typename Tape>
174 template<
typename Tape>
175 bool constexpr supportsEditing = SupportsEditing<Tape>::value;
179 template<
typename Tape>
183 template<
typename Tape>
typename std::enable_if< SupportsEditing< Tape >::value >::type EnableIfSupportsEditing
Enable if wrapper for SupportsEditing.
Definition tapeTraits.hpp:180
typename std::enable_if< IsJacobianTape< Tape >::value >::type EnableIfJacobianTape
Enable if wrapper for IsJacobianTape.
Definition tapeTraits.hpp:135
typename std::enable_if< IsPrimalValueTape< Tape >::value >::type EnableIfPrimalValueTape
Enable if wrapper for IsPrimalValueTape.
Definition tapeTraits.hpp:114
typename std::enable_if< IsForwardTape< Tape >::value >::type EnableIfForwardTape
Enable if wrapper for IsForwardTape.
Definition tapeTraits.hpp:93
typename std::enable_if<!SupportsEditing< Tape >::value >::type EnableIfNoEditing
Enable if wrapper for SupportsEditing.
Definition tapeTraits.hpp:184
typename std::enable_if< IsReverseTape< Tape >::value >::type EnableIfReverseTape
Enable if wrapper for IsReverseTape.
Definition tapeTraits.hpp:161
CoDiPack - Code Differentiation Package.
Definition codi.hpp:91
std::enable_if< std::is_base_of< Base, Impl >::value, R > enable_if_base_of
Enable if abbreviation for std::is_base_of.
Definition enableIfHelpers.hpp:47
Represents a concrete lvalue in the CoDiPack expression tree.
Definition activeType.hpp:52
Edit tapes after they have been recorded.
Definition editingTapeInterface.hpp:65
Implementation of a tape-free forward AD mode through the internal expression interfaces.
Definition forwardEvaluation.hpp:72
Base class for all standard Jacobian tape implementations.
Definition jacobianBaseTape.hpp:128
Base class for all standard Primal value tape implementations.
Definition primalValueBaseTape.hpp:137
Tape for tagging variables and find errors in the AD workflow.
Definition tagTapeForward.hpp:62
Tape for tagging variables and find errors in the AD workflow.
Definition tagTapeReverse.hpp:56
If the tape inherits from ForwardEvaluation.
Definition tapeTraits.hpp:71
If the tape inherits from JacobianBaseTape.
Definition tapeTraits.hpp:118
If the tape inherits from PrimalValueBaseTape.
Definition tapeTraits.hpp:97
Definition tapeTraits.hpp:138
Definition tapeTraits.hpp:164