Внедрить экспериментальное пространство имен в std
Это плохо или хорошо parctice, чтобы ввести пространство именstd::experimental
вstd
как следующий?
namespace std
{
namespace experimental
{
}
using namespace experimental;
}
#include <experimental/optional>
int main()
{
std::optional< int > o;
return 0;
}
Или даже в более современной форме:
#if __has_include(<optional>)
# include <optional>
#elif __has_include(<experimental/optional>)
# include <experimental/optional>
namespace std
{
using namespace experimental;
}
#else
#error !
#endif
int main()
{
std::optional< int > o;
return 0;
}
Намерение представитьstd::experimental
"под-пространство имен" ясно, потому чтоstd::experimental
в настоящее время содержитмножествоновый библиотеки, Я думаю, что очень вероятно, что все они будут мигрировать вnamespace std
без каких-либо существенных изменений и написанного в настоящее время кода пользователя на это можно положиться (я совершенно не прав?). В противном случае весь этот код должен быть изменен, чтобы изменитьstd::experimental::
вstd::
в будущем. Это не большое дело, но могут быть причины не делать этого.
Вопрос касается как производственного кода, так и не слишком серьезного кода.