Inject namespace experimental to std : <p>Is it bad or good parctice to inject namespace <code>std::experimental</code> into <code>std</code> like following?</p>

<pre><code>namespace std
{
namespace experimental
{
}
using namespace experimental;    
}

#include &lt;experimental/optional&gt;

int main()
{
    std::optional&lt; int &gt; o;
    return 0;
}
</code></pre>

<p>Or even in more modern form:</p>

<pre><code>#if __has_include(&lt;optional&gt;)
# include &lt;optional&gt;
#elif __has_include(&lt;experimental/optional&gt;)
# include &lt;experimental/optional&gt;
namespace std
{
using namespace experimental;    
}
#else
#error !
#endif

int main()
{
    std::optional&lt; int &gt; o;
    return 0;
}
</code></pre>

<p>The intention to introduce <code>std::experimental</code> "sub-namespace" is clear because <code>std::experimental</code> currently contains <a href="http://en.cppreference.com/w/cpp/experimental">a plenty of <strong>new</strong> libraries</a>. I think it is very likely all them will migrate into <code>namespace std</code> without any substantial changes and user code written currently can rely upon this (am I totally wrong?). Otherwise all this code should be refactored to change from <code>std::experimental::</code> to <code>std::</code> in the future. It is not big deal, but there may be reasons not to do so.</p>

<p>The question is about both production code and not-too-serious code.</p>
