title: Should implicit conversion work in the context of a template argument?
body: <p>To be more explicit, should a compiler treat a <code>true_type</code> value as <code>true</code> in the first argument of <code>enable_if</code>, because <code>true_type</code> is really <code>std::integral_constant&lt;bool, true&gt;</code>, and <code>integral_constant</code> defines the type conversion function <code>operator value_type</code>?</p>
  
  <p>The following is the simplest test code:</p>
  
  <pre class="lang-cpp prettyprint-override"><code>#include &lt;type_traits&gt;
  
  template &lt;typename T&gt;
  std::enable_if_t&lt;std::is_pod&lt;T&gt;{}&gt;
  test(T)
  {
  }
  
  int main()
  {
      test(true);
  }
  </code></pre>
  
  <p>It is accepted by GCC and Clang, but rejected by MSVC (up to Visual Studio 2019 v16.3.1).</p>