10#ifndef EIGEN_STL_FUNCTORS_H
11#define EIGEN_STL_FUNCTORS_H
14#include "../InternalHeaderCheck.h"
22struct functor_traits<std::multiplies<T> > {
23 enum { Cost = NumTraits<T>::MulCost, PacketAccess =
false };
27struct functor_traits<std::divides<T> > {
28 enum { Cost = NumTraits<T>::MulCost, PacketAccess =
false };
32struct functor_traits<std::plus<T> > {
33 enum { Cost = NumTraits<T>::AddCost, PacketAccess =
false };
37struct functor_traits<std::minus<T> > {
38 enum { Cost = NumTraits<T>::AddCost, PacketAccess =
false };
42struct functor_traits<std::negate<T> > {
43 enum { Cost = NumTraits<T>::AddCost, PacketAccess =
false };
47struct functor_traits<std::logical_or<T> > {
48 enum { Cost = 1, PacketAccess =
false };
52struct functor_traits<std::logical_and<T> > {
53 enum { Cost = 1, PacketAccess =
false };
57struct functor_traits<std::logical_not<T> > {
58 enum { Cost = 1, PacketAccess =
false };
62struct functor_traits<std::greater<T> > {
63 enum { Cost = 1, PacketAccess =
false };
67struct functor_traits<std::less<T> > {
68 enum { Cost = 1, PacketAccess =
false };
72struct functor_traits<std::greater_equal<T> > {
73 enum { Cost = 1, PacketAccess =
false };
77struct functor_traits<std::less_equal<T> > {
78 enum { Cost = 1, PacketAccess =
false };
82struct functor_traits<std::equal_to<T> > {
83 enum { Cost = 1, PacketAccess =
false };
87struct functor_traits<std::not_equal_to<T> > {
88 enum { Cost = 1, PacketAccess =
false };
91#if (EIGEN_COMP_CXXVER < 17)
94struct functor_traits<std::unary_negate<T> > {
95 enum { Cost = 1 + functor_traits<T>::Cost, PacketAccess =
false };
100struct functor_traits<std::binary_negate<T> > {
101 enum { Cost = 1 + functor_traits<T>::Cost, PacketAccess =
false };
105#ifdef EIGEN_STDEXT_SUPPORT
107template <
typename T0,
typename T1>
108struct functor_traits<std::project1st<T0, T1> > {
109 enum { Cost = 0, PacketAccess =
false };
112template <
typename T0,
typename T1>
113struct functor_traits<std::project2nd<T0, T1> > {
114 enum { Cost = 0, PacketAccess =
false };
117template <
typename T0,
typename T1>
118struct functor_traits<std::select2nd<std::pair<T0, T1> > > {
119 enum { Cost = 0, PacketAccess =
false };
122template <
typename T0,
typename T1>
123struct functor_traits<std::select1st<std::pair<T0, T1> > > {
124 enum { Cost = 0, PacketAccess =
false };
127template <
typename T0,
typename T1>
128struct functor_traits<std::unary_compose<T0, T1> > {
129 enum { Cost = functor_traits<T0>::Cost + functor_traits<T1>::Cost, PacketAccess =
false };
132template <
typename T0,
typename T1,
typename T2>
133struct functor_traits<std::binary_compose<T0, T1, T2> > {
134 enum { Cost = functor_traits<T0>::Cost + functor_traits<T1>::Cost + functor_traits<T2>::Cost, PacketAccess =
false };
141#ifdef EIGEN_FUNCTORS_PLUGIN
142#include EIGEN_FUNCTORS_PLUGIN
Namespace containing all symbols from the Eigen library.
Definition Core:137