17 #include <bsoncxx/config/prelude.hpp>
19 #if defined(BSONCXX_POLY_USE_MNMLSTC)
21 #include <core/optional.hpp>
24 inline namespace v_noabi {
27 using ::core::make_optional;
28 using ::core::nullopt;
29 using ::core::nullopt_t;
30 using ::core::optional;
36 #elif defined(BSONCXX_POLY_USE_BOOST)
38 #include <boost/none.hpp>
39 #include <boost/optional/optional.hpp>
40 #include <boost/optional/optional_io.hpp>
43 inline namespace v_noabi {
46 using ::boost::optional;
47 using nullopt_t = ::boost::none_t;
50 const nullopt_t nullopt{::boost::none};
51 using ::boost::make_optional;
57 #elif defined(BSONCXX_POLY_USE_STD_EXPERIMENTAL)
59 #include <experimental/optional>
62 inline namespace v_noabi {
65 using ::std::experimental::make_optional;
66 using ::std::experimental::nullopt;
67 using ::std::experimental::nullopt_t;
68 using ::std::experimental::optional;
74 #elif defined(BSONCXX_POLY_USE_STD)
79 inline namespace v_noabi {
82 using ::std::make_optional;
84 using ::std::nullopt_t;
85 using ::std::optional;
92 #error "Cannot find a valid polyfill for optional"
95 #include <bsoncxx/config/postlude.hpp>
The top-level namespace for bsoncxx library entities.
Definition: element.hpp:24