Inject Namespace experimentell zu std

Ist es schlecht oder gut, Namensraum zu injizierenstd::experimentalinstd wie folgt?

namespace std
{
namespace experimental
{
}
using namespace experimental;    
}

#include <experimental/optional>

int main()
{
    std::optional< int > o;
    return 0;
}

der noch moderner:

#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;
}

Die Absicht, @ einzuführstd::experimental "Sub-Namespace" ist klar, weilstd::experimental enthält derzeiteine Menge vonNe Bibliotheken. Ich denke, es ist sehr wahrscheinlich, dass alle nach @ migrieren werdenamespace std ohne wesentliche Änderungen und aktuell geschriebenen Benutzercode kann man sich darauf verlassen (irre ich mich total?). Andernfalls sollte der gesamte Code überarbeitet werden, um ihn von @ zu änderstd::experimental:: zustd:: in der Zukunft. Es ist keine große Sache, aber es kann Gründe geben, dies nicht zu tun.

Die Frage bezieht sich sowohl auf Produktionscode als auch auf nicht allzu ernsthaften Code.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage