Inject Namespace experimentell zu std
Ist es schlecht oder gut, Namensraum zu injizierenstd::experimental
instd
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.