10 #ifndef EIGEN_STL_FUNCTORS_H 11 #define EIGEN_STL_FUNCTORS_H 20 struct functor_traits<
std::multiplies<T> >
21 {
enum { Cost = NumTraits<T>::MulCost, PacketAccess =
false }; };
24 struct functor_traits<
std::divides<T> >
25 {
enum { Cost = NumTraits<T>::MulCost, PacketAccess =
false }; };
28 struct functor_traits<
std::plus<T> >
29 {
enum { Cost = NumTraits<T>::AddCost, PacketAccess =
false }; };
32 struct functor_traits<
std::minus<T> >
33 {
enum { Cost = NumTraits<T>::AddCost, PacketAccess =
false }; };
36 struct functor_traits<
std::negate<T> >
37 {
enum { Cost = NumTraits<T>::AddCost, PacketAccess =
false }; };
40 struct functor_traits<
std::logical_or<T> >
41 {
enum { Cost = 1, PacketAccess =
false }; };
44 struct functor_traits<
std::logical_and<T> >
45 {
enum { Cost = 1, PacketAccess =
false }; };
48 struct functor_traits<
std::logical_not<T> >
49 {
enum { Cost = 1, PacketAccess =
false }; };
52 struct functor_traits<
std::greater<T> >
53 {
enum { Cost = 1, PacketAccess =
false }; };
56 struct functor_traits<
std::less<T> >
57 {
enum { Cost = 1, PacketAccess =
false }; };
60 struct functor_traits<
std::greater_equal<T> >
61 {
enum { Cost = 1, PacketAccess =
false }; };
64 struct functor_traits<
std::less_equal<T> >
65 {
enum { Cost = 1, PacketAccess =
false }; };
68 struct functor_traits<
std::equal_to<T> >
69 {
enum { Cost = 1, PacketAccess =
false }; };
72 struct functor_traits<
std::not_equal_to<T> >
73 {
enum { Cost = 1, PacketAccess =
false }; };
75 #if (__cplusplus < 201103L) && (EIGEN_COMP_MSVC <= 1900) 78 struct functor_traits<
std::binder2nd<T> >
79 {
enum { Cost = functor_traits<T>::Cost, PacketAccess =
false }; };
82 struct functor_traits<
std::binder1st<T> >
83 {
enum { Cost = functor_traits<T>::Cost, PacketAccess =
false }; };
87 struct functor_traits<
std::unary_negate<T> >
88 {
enum { Cost = 1 + functor_traits<T>::Cost, PacketAccess =
false }; };
91 struct functor_traits<
std::binary_negate<T> >
92 {
enum { Cost = 1 + functor_traits<T>::Cost, PacketAccess =
false }; };
94 #ifdef EIGEN_STDEXT_SUPPORT 96 template<
typename T0,
typename T1>
97 struct functor_traits<
std::project1st<T0,T1> >
98 {
enum { Cost = 0, PacketAccess =
false }; };
100 template<
typename T0,
typename T1>
101 struct functor_traits<
std::project2nd<T0,T1> >
102 {
enum { Cost = 0, PacketAccess =
false }; };
104 template<
typename T0,
typename T1>
105 struct functor_traits<
std::select2nd<std::pair<T0,T1> > >
106 {
enum { Cost = 0, PacketAccess =
false }; };
108 template<
typename T0,
typename T1>
109 struct functor_traits<
std::select1st<std::pair<T0,T1> > >
110 {
enum { Cost = 0, PacketAccess =
false }; };
112 template<
typename T0,
typename T1>
113 struct functor_traits<
std::unary_compose<T0,T1> >
114 {
enum { Cost = functor_traits<T0>::Cost + functor_traits<T1>::Cost, PacketAccess =
false }; };
116 template<
typename T0,
typename T1,
typename T2>
117 struct functor_traits<
std::binary_compose<T0,T1,T2> >
118 {
enum { Cost = functor_traits<T0>::Cost + functor_traits<T1>::Cost + functor_traits<T2>::Cost, PacketAccess =
false }; };
120 #endif // EIGEN_STDEXT_SUPPORT 124 #ifdef EIGEN_FUNCTORS_PLUGIN 125 #include EIGEN_FUNCTORS_PLUGIN 132 #endif // EIGEN_STL_FUNCTORS_H Namespace containing all symbols from the Eigen library.
Definition: Core:287
Definition: Eigen_Colamd.h:50