Является ли это плохим или хорошим 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::
в будущем. Это не имеет большого значения, но могут быть причины не делать этого.
Вопрос касается как производственного кода, так и не слишком серьезного кода.