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