Why does std::make_pair not return a pair? Or does it? : <p>My internal sanity check failed so I'm rerunning it on Stackoverflow.</p>

<p>The following code:</p>

<pre><code>#include &lt;iostream&gt;
#include &lt;typeinfo&gt;
#include &lt;utility&gt;

int main()
{
    constexpr auto pair_of_ints = std::make_pair(1, 2);
    std::cerr &lt;&lt; typeid(pair_of_ints).name();
    //static_assert(std::is_same&lt;decltype(pair_of_ints), std::pair&lt;int, int&gt;&gt;::value, "WTF");
}
</code></pre>

<p>produces the mangled symbol name for <code>std::__1::pair&lt;int, int&gt;</code> on my system (XCode Clang 8.x).</p>

<p>If I then enable the <code>static_assert</code>, it fails. I have no idea why.
How can I make this work? I have a function that returns a pair or tuple depending on the arguments passed to it and would like to verify it actually returns a pair or tuple in the correct cases.</p>
