Why is the constructor of std::in_place_t defaulted and explicit?
If you leave out the constructor it will not be explicit
. If you don't = default
it it will not be trivial.
So, if you want the constructor to be explicit
and you also want it to remain trivial, what you see is the only option available.
You want a type like this to only be explicit
ly constructible, because it exists to denote a particular kind of constructor overload, in places where {}
might reasonably be found.
Consider the following constructions
std::optional<DefaultConstructible> dc1({}); // dc1 == std::nullopt
std::optional<DefaultConstructible> dc2(std::in_place); // dc2 == DefaultConstructible()