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.

Respuestas a la pregunta(4)

Su respuesta a la pregunta