/////////////////////////////////////////////////////////////////////////////// /// \file integral_c.hpp /// Contains definition of the integral_c transform and friends. // // Copyright 2011 Eric Niebler. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) #ifndef BOOST_PROTO_TRANSFORM_INTEGRAL_C_HPP_EAN_04_28_2011 #define BOOST_PROTO_TRANSFORM_INTEGRAL_C_HPP_EAN_04_28_2011 #include #include namespace boost { namespace proto { /// \brief A PrimitiveTransform that returns a specified /// integral constant /// template struct integral_c : transform > { template struct impl : transform_impl { typedef T result_type; /// \return \c I /// \throw nothrow T operator()( typename impl::expr_param , typename impl::state_param , typename impl::data_param ) const { return I; } }; }; /// \brief A PrimitiveTransform that returns a specified /// char /// template struct char_ : integral_c {}; /// \brief A PrimitiveTransform that returns a specified /// int /// template struct int_ : integral_c {}; /// \brief A PrimitiveTransform that returns a specified /// long /// template struct long_ : integral_c {}; /// \brief A PrimitiveTransform that returns a specified /// std::size_t /// template struct size_t : integral_c {}; /// INTERNAL ONLY /// template struct is_callable > : mpl::true_ {}; /// INTERNAL ONLY /// template struct is_callable > : mpl::true_ {}; /// INTERNAL ONLY /// template struct is_callable > : mpl::true_ {}; /// INTERNAL ONLY /// template struct is_callable > : mpl::true_ {}; /// INTERNAL ONLY /// template struct is_callable > : mpl::true_ {}; }} #endif