No member named value in std::is_convertible when using clang
<p>In a very simple situation with a constrained constructor, testing for convertibility of the argument, an error is produced in clang, but not in g++:</p>

<pre class="lang-cpp prettyprint-override"><code>#include &lt;type_traits&gt;

template &lt;class T, class U&gt;
constexpr bool Convertible = std::is_convertible&lt;T,U&gt;::value &amp;&amp; std::is_convertible&lt;U,T&gt;::value;

template &lt;class T&gt;
struct A
{
  template &lt;class S, class = std::enable_if_t&lt;Convertible&lt;S,T&gt;&gt; &gt;
  A(S const&amp;) {}
};

int main()
{
  A&lt;double&gt; s = 1.0;
}
</code></pre>

<p>Maybe this issue is related to <a href="https://stackoverflow.com/questions/27748442/is-clangs-c11-support-reliable">Is clang&#39;s c++11 support reliable?</a> </p>

<p>The error clang gives, reads:</p>

<pre><code>error: no member named 'value' in 'std::is_convertible&lt;double, A&lt;double&gt; &gt;'
constexpr bool Convertible = std::is_convertible&lt;T,U&gt;::value &amp;&amp; std::is_convertible&lt;U,T&gt;::value;
                                                                ~~~~~~~~~~~~~~~~~~~~~~~~~~^
</code></pre>

<p>I've tried</p>

<ul>
<li>g++-5.4, g++-6.2  (no error)</li>
<li>clang++-3.5, clang++-3.8, clang++-3.9 (error)</li>
</ul>

<p>with argument <code>-std=c++1y</code> and for clang either with <code>-stdlib=libstdc++</code> or <code>-stdlib=libc++</code>.</p>

<p>Which compiler is correct? Is it a bug in clang or gcc? Or is the behavior for some reasons undefined and thus both compilers <em>correct</em>?</p>