17#include <bsoncxx/config/prelude.hpp>
19#if defined(BSONCXX_POLY_USE_MNMLSTC)
21#include <core/optional.hpp>
24inline namespace v_noabi {
27using ::core::make_optional;
29using ::core::nullopt_t;
30using ::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>
43inline namespace v_noabi {
46using ::boost::optional;
47using nullopt_t = ::boost::none_t;
50const nullopt_t nullopt{::boost::none};
51using ::boost::make_optional;
57#elif defined(BSONCXX_POLY_USE_STD_EXPERIMENTAL)
59#include <experimental/optional>
62inline namespace v_noabi {
65using ::std::experimental::make_optional;
66using ::std::experimental::nullopt;
67using ::std::experimental::nullopt_t;
68using ::std::experimental::optional;
74#elif defined(BSONCXX_POLY_USE_STD)
79inline namespace v_noabi {
82using ::std::make_optional;
84using ::std::nullopt_t;
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