Inyectar espacio de nombres experimental a std
¿Es mala o buena práctica inyectar espacio de nombres?std::experimental
dentrostd
como seguir?
namespace std
{
namespace experimental
{
}
using namespace experimental;
}
#include <experimental/optional>
int main()
{
std::optional< int > o;
return 0;
}
O incluso en forma más moderna:
#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;
}
La intención de presentarstd::experimental
"sub-namespace" es claro porquestd::experimental
actualmente contieneun montón denuevo bibliotecas. Creo que es muy probable que todos migren anamespace std
sin cambios sustanciales y el código de usuario escrito actualmente puede confiar en esto (¿estoy totalmente equivocado?). De lo contrario, todo este código debe ser refactorizado para cambiar destd::experimental::
astd::
en el futuro. No es gran cosa, pero puede haber razones para no hacerlo.
La pregunta es sobre el código de producción y el código no demasiado serio.