1 /*============================================================================= 2 Copyright (c) 2011 Eric Niebler 3 4 Distributed under the Boost Software License, Version 1.0. (See accompanying 5 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 6 ==============================================================================*/ 7 8 #if !defined(BOOST_FUSION_SINGLE_VIEW_AT_IMPL_JUL_07_2011_1348PM) 9 #define BOOST_FUSION_SINGLE_VIEW_AT_IMPL_JUL_07_2011_1348PM 10 11 #include <boost/fusion/support/config.hpp> 12 #include <boost/mpl/int.hpp> 13 #include <boost/mpl/assert.hpp> 14 #include <boost/mpl/equal_to.hpp> 15 16 namespace boost { namespace fusion 17 { 18 struct single_view_tag; 19 20 namespace extension 21 { 22 template<typename Tag> 23 struct at_impl; 24 25 template<> 26 struct at_impl<single_view_tag> 27 { 28 template<typename Sequence, typename N> 29 struct apply 30 { 31 BOOST_MPL_ASSERT((mpl::equal_to<N, mpl::int_<0> >)); 32 typedef typename Sequence::value_type type; 33 34 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED 35 static type callboost::fusion::extension::at_impl::apply36 call(Sequence& seq) 37 { 38 return seq.val; 39 } 40 }; 41 }; 42 } 43 44 }} 45 46 #endif 47