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