File indexing completed on 2025-01-18 09:40:49
0001 #ifndef BOOST_METAPARSE_V1_OPTIONAL_HPP
0002 #define BOOST_METAPARSE_V1_OPTIONAL_HPP
0003
0004
0005
0006
0007
0008
0009 #include <boost/metaparse/v1/is_error.hpp>
0010 #include <boost/metaparse/v1/accept.hpp>
0011
0012 #include <boost/mpl/if.hpp>
0013
0014 namespace boost
0015 {
0016 namespace metaparse
0017 {
0018 namespace v1
0019 {
0020 template <class P, class Default = void>
0021 struct optional
0022 {
0023 typedef optional type;
0024
0025 template <class S, class Pos>
0026 struct apply :
0027 boost::mpl::if_<
0028 is_error<typename P::template apply<S, Pos> >,
0029 accept<Default, S, Pos>,
0030
0031 typename P::template apply<S, Pos>::type
0032 >
0033 {};
0034 };
0035 }
0036 }
0037 }
0038
0039 #endif
0040