title: Ternary allowed to call an explicit copy constructor implicitly?
body: <p>Consider the code below:</p>
  
  <pre><code>#include &lt;cstdio&gt;
  struct A
  {
      A(){}
      explicit A(const A&amp;) {std::puts("copy");}
  };
  
  int main() 
  {
      A a;
      true ? a : A();
      return 0;
  }
  </code></pre>
  
  <p>As I understand the ternary would try to copy <strong>a</strong> and should fail since the copy constructor is explicit, however gcc compiles this just fine and creates a copy. Clang spits out an error as expected. </p>
  
  <p>Is this a bug in gcc?</p>
  
  <p>I'm using gcc 8.1 and clang 7.0, in c++17 mode, but I also tried all versions of gcc in <a href="https://godbolt.org/" rel="noreferrer">compiler explorer</a> in c++98 mode, and they all behave the same.</p>