File indexing completed on 2025-12-15 10:07:03
0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef BOOST_PROTO_TRANSFORM_LAZY_HPP_EAN_12_02_2007
0010 #define BOOST_PROTO_TRANSFORM_LAZY_HPP_EAN_12_02_2007
0011
0012 #include <boost/preprocessor/iteration/iterate.hpp>
0013 #include <boost/preprocessor/repetition/enum_params.hpp>
0014 #include <boost/preprocessor/repetition/enum_trailing_params.hpp>
0015 #include <boost/proto/proto_fwd.hpp>
0016 #include <boost/proto/transform/make.hpp>
0017 #include <boost/proto/transform/call.hpp>
0018 #include <boost/proto/transform/impl.hpp>
0019 #include <boost/proto/transform/detail/pack.hpp>
0020
0021 namespace boost { namespace proto
0022 {
0023
0024
0025
0026
0027
0028
0029
0030
0031 template<typename Object>
0032 struct lazy : transform<lazy<Object> >
0033 {
0034 template<typename Expr, typename State, typename Data>
0035 struct impl
0036 : call<
0037 typename make<Object>::template impl<Expr, State, Data>::result_type
0038 >::template impl<Expr, State, Data>
0039 {};
0040 };
0041
0042
0043 template<typename Fun>
0044 struct lazy<detail::msvc_fun_workaround<Fun> >
0045 : lazy<Fun>
0046 {};
0047
0048 #include <boost/proto/transform/detail/lazy.hpp>
0049
0050
0051
0052 template<typename Object>
0053 struct is_callable<lazy<Object> >
0054 : mpl::true_
0055 {};
0056
0057 }}
0058
0059 #endif