10#ifndef EIGEN_STL_FUNCTORS_H
11#define EIGEN_STL_FUNCTORS_H
18template<
typename T =
void>
20 typedef bool result_type;
21 EIGEN_DEVICE_FUNC
bool operator()(
const T& lhs,
const T& rhs)
const {
26template<
typename T =
void>
28 typedef bool result_type;
29 EIGEN_DEVICE_FUNC
bool operator()(
const T& lhs,
const T& rhs)
const {
42struct functor_traits<std::multiplies<T> >
43{
enum { Cost = NumTraits<T>::MulCost, PacketAccess =
false }; };
46struct functor_traits<std::divides<T> >
47{
enum { Cost = NumTraits<T>::MulCost, PacketAccess =
false }; };
50struct functor_traits<std::plus<T> >
51{
enum { Cost = NumTraits<T>::AddCost, PacketAccess =
false }; };
54struct functor_traits<std::minus<T> >
55{
enum { Cost = NumTraits<T>::AddCost, PacketAccess =
false }; };
58struct functor_traits<std::negate<T> >
59{
enum { Cost = NumTraits<T>::AddCost, PacketAccess =
false }; };
62struct functor_traits<std::logical_or<T> >
63{
enum { Cost = 1, PacketAccess =
false }; };
66struct functor_traits<std::logical_and<T> >
67{
enum { Cost = 1, PacketAccess =
false }; };
70struct functor_traits<std::logical_not<T> >
71{
enum { Cost = 1, PacketAccess =
false }; };
74struct functor_traits<std::greater<T> >
75{
enum { Cost = 1, PacketAccess =
false }; };
78struct functor_traits<std::less<T> >
79{
enum { Cost = 1, PacketAccess =
false }; };
82struct functor_traits<std::greater_equal<T> >
83{
enum { Cost = 1, PacketAccess =
false }; };
86struct functor_traits<std::less_equal<T> >
87{
enum { Cost = 1, PacketAccess =
false }; };
90struct functor_traits<std::equal_to<T> >
91{
enum { Cost = 1, PacketAccess =
false }; };
94struct functor_traits<numext::equal_to<T> >
95 : functor_traits<std::equal_to<T> > {};
98struct functor_traits<std::not_equal_to<T> >
99{
enum { Cost = 1, PacketAccess =
false }; };
102struct functor_traits<numext::not_equal_to<T> >
103 : functor_traits<std::not_equal_to<T> > {};
105#if (EIGEN_COMP_CXXVER < 11)
108struct functor_traits<std::binder2nd<T> >
109{
enum { Cost = functor_traits<T>::Cost, PacketAccess =
false }; };
112struct functor_traits<std::binder1st<T> >
113{
enum { Cost = functor_traits<T>::Cost, PacketAccess =
false }; };
116#if (EIGEN_COMP_CXXVER < 17)
119struct functor_traits<std::unary_negate<T> >
120{
enum { Cost = 1 + functor_traits<T>::Cost, PacketAccess =
false }; };
124struct functor_traits<std::binary_negate<T> >
125{
enum { Cost = 1 + functor_traits<T>::Cost, PacketAccess =
false }; };
128#ifdef EIGEN_STDEXT_SUPPORT
130template<
typename T0,
typename T1>
131struct functor_traits<std::project1st<T0,T1> >
132{
enum { Cost = 0, PacketAccess =
false }; };
134template<
typename T0,
typename T1>
135struct functor_traits<std::project2nd<T0,T1> >
136{
enum { Cost = 0, PacketAccess =
false }; };
138template<
typename T0,
typename T1>
139struct functor_traits<std::select2nd<std::pair<T0,T1> > >
140{
enum { Cost = 0, PacketAccess =
false }; };
142template<
typename T0,
typename T1>
143struct functor_traits<std::select1st<std::pair<T0,T1> > >
144{
enum { Cost = 0, PacketAccess =
false }; };
146template<
typename T0,
typename T1>
147struct functor_traits<std::unary_compose<T0,T1> >
148{
enum { Cost = functor_traits<T0>::Cost + functor_traits<T1>::Cost, PacketAccess =
false }; };
150template<
typename T0,
typename T1,
typename T2>
151struct functor_traits<std::binary_compose<T0,T1,T2> >
152{
enum { Cost = functor_traits<T0>::Cost + functor_traits<T1>::Cost + functor_traits<T2>::Cost, PacketAccess =
false }; };
158#ifdef EIGEN_FUNCTORS_PLUGIN
159#include EIGEN_FUNCTORS_PLUGIN
Namespace containing all symbols from the Eigen library.
Definition: Core:141