Некоторые std::optional
конструкторы используют std::in_place_t
параметр тега, как это:
template< class... Args >
explicit optional( std::in_place_t, Args&&... args );
Я вижу, что такие конструкторы могут быть реализованы без тега in-place и использовать некоторую магию enable-if, чтобы не участвовать в нежелательных перегрузках, а именно:
template< class... Args >
explicit optional( Args&&... args );
Почему std::optional
встроенные конструкторы реализованы с использованием тега in-place, а не с помощью магии enable-if (и без тега)?
Обновление: вопрос немного обновлен, чтобы подчеркнуть, что я понимаю, что просто исключить тег in-place не получится.