title: Member initialization for non-copyable variable in C++17
body: <p>When performing member initialization for non-copyable variable (such as <code>std::atomic&lt;int&gt;</code>), it's required to use <code>direct-initialization</code> rather than <code>copy-initialization</code> according to answer <a href="https://stackoverflow.com/a/27354688/11501255">here</a>. However when I turn on <code>-std=c++17</code> in <code>g++ 7.4.0</code>, it seems that the latter one also works well.</p>
  
  <pre class="lang-cpp prettyprint-override"><code>#include &lt;atomic&gt;
  
  class A {
      std::atomic&lt;int&gt; a = 0;     // copy-initialization
      std::atomic&lt;int&gt; b{0};      // direct-initialization
  };
  </code></pre>
  
  <pre class="lang-sh prettyprint-override"><code>$ g++ -c atomic.cc -std=c++11    // or c++14
  atomic.cc:4:26: error: use of deleted function ‘std::atomic&lt;int&gt;::atomic(const std::atomic&lt;int&gt;&amp;)’
       std::atomic&lt;int&gt; a = 0;     // copy-initialization
  
  $ g++ -c atomic.cc -std=c++17
  // no error
  </code></pre>
  
  <p>It also failed when compiling with <code>g++ 6.5.0</code> even with <code>-std=c++17</code>. Which one is correct here?</p>