36 template<
class ValueType>
45 template<
class ValueType>
62 template<
class ValueType,
class CastedKeyValuePairType,
class KeyValuePairType>
64 static CastedKeyValuePairType
cast(KeyValuePairType key_value) {
66 return CastedKeyValuePairType(key_value.key,
68 ValueType
>&>(key_value.value)).
value());
72 template<
class CastedKeyValuePairType,
class KeyValuePairType>
74 static CastedKeyValuePairType
cast(KeyValuePairType key_value) {
78 return CastedKeyValuePairType(key_value.key, key_value.value);
82 template<
class CastedKeyValuePairType,
class KeyValuePairType>
84 static CastedKeyValuePairType
cast(KeyValuePairType key_value) {
88 return CastedKeyValuePairType(key_value.key, key_value.value);
93 template <
class ValueType>
103 template <
class ValueType>
104 std::map<Key, ValueType>
106 std::map<Key, ValueType>
result;
109 if (filterFcn(
key)) {
121 inline bool Values::filterHelper<Value>(
const std::function<
bool(
Key)> filter,
124 return filter(key_value.
key);
133 template <
typename ValueType>
146 template <
typename MatrixType,
bool isDynamic>
150 template <
int M,
int N>
165 template <
int M,
int N>
183 if (
A.rows() !=
M ||
A.cols() !=
N)
192 template <
int M,
int N>
205 template <
int M,
int N>
206 struct handle_matrix<
Eigen::
Matrix<double, M, N, 0, M, N>, true> {
220 template <
int M,
int N>
221 struct handle_matrix<
Eigen::
Matrix<double, M, N, 0, M, N>, false> {
223 auto ptr =
dynamic_cast<const GenericValue<Eigen::Matrix<double, M, N>
>*>(pointer);
230 auto ptr =
dynamic_cast<const GenericValue<Eigen::MatrixXd>*
>(pointer);
235 A = handle_matrix<Eigen::VectorXd, true>()(
j, pointer);
238 if (
A.rows() !=
M ||
A.cols() !=
N)
239 throw NoMatchFoundForFixed(
M,
N,
A.rows(),
A.cols());
247 template <
int M,
int N>
250 return handle_matrix<Eigen::Matrix<double, M, N, 0, M, N>,
254 #endif // #if _MSC_VER < 1937
255 #endif // #ifdef _WIN32
260 template <
typename ValueType>
263 KeyValueMap::const_iterator item =
values_.find(
j);
271 return h(
j, item->second.get());
275 template<
typename ValueType>
278 KeyValueMap::const_iterator item =
values_.find(
j);
285 return &ptr->
value();
298 template<
typename ValueType>
304 template <
typename UnaryOp,
typename ValueType>
310 template <
typename BinaryOp,
typename ValueType1,
typename ValueType2>
316 template <
typename ValueType>
322 template <
typename UnaryOp,
typename ValueType>
328 template <
typename BinaryOp,
typename ValueType1,
typename ValueType2>
334 template <
typename ValueType>
339 template <
typename UnaryOp,
typename ValueType>
344 template <
typename BinaryOp,
typename ValueType1,
typename ValueType2>