added nullopt, in_place and bad_optional_access from std namespace to Dune::Std namespace
Summary
Import types std::nullopt_t
, std::in_place_t
, and std::bad_optional_access
and instances nullopt
and in_place
of these types into namespace Dune::Std
in the file <dune/common/std/optional>
in case of DUNE_HAVE_CXX_OPTIONAL
is defined.
Motivation
If you have a compiler with c++17 std::optional
support, the std implementation is imported into the namespace Dune::Std
, but not all Helper classes are imported as well, i.e. nullopt_t
, nullopt
, in_place_t
, in_place
and bad_optional_access
are missing. So, I neither can use e.g. std::nullopt
nor can I use Dune::Std::nullopt
, since the first one is defined whenever DUNE_HAVE_CXX_OPTIONAL
is set and the second one if it is not set.
Discussion
For the future it has to be decided, whether std::in_place***
is implemented in <dune/common/std/optional>
or better in <dune/common/std/utility>
, since in the std library it is defined there and used not just for optional
but also for variant
and any
.