cppreference shows the following definition of std::in_place_t:
struct in_place_t {
explicit in_place_t() = default;
};
inline constexpr std::in_place_t in_place{};
Why have they added an explicit and defaulted constructor? Why it isn't left out? What are the benefits?
You want a type like this to only be
explicitly constructible, because it exists to denote a particular kind of constructor overload, in places where{}might reasonably be found.Consider the following constructions