title: can't compile struct with std::atomic member with explicit instantiation
body: <p>I am exploring the use of std::atomic in a struct across translation units and have run into a constructor compile problem. When I try to use explicit instantiation, the compiler says they don't match. How do I match up the explicit instantiation and the A constructor?</p>
  <pre><code>#include &lt;string&gt;
  #include &lt;atomic&gt;
  #include &lt;map&gt;
  
  struct A
  {
    A( std::string strArg, bool onOffArg ) // added constuctor after compiler complained it couldn't find one that matched
      : str { strArg }, onOff { onOffArg } {}
    ~A() {}
  
    std::string str {};
    std::atomic&lt; bool &gt; onOff { false }; // (see Edit1, Remy Lebeau). error C2440: 'initializing': cannot convert from 'initializer list' to 'std::map&lt;int,A,std::less&lt;int&gt;,std::allocator&lt;std::pair&lt;const int,A&gt;&gt;&gt;', 'No constructor could take the source type, or constructor overload resolution was ambiguous'
  };
  A( const A&amp; oldA ) // (see Edit2, Eugene)
  {
    str = oldA.str;
    onOff.store( oldA.onOff.load() );
  }
  
  
  int main()
  {
    std::map&lt; int, A &gt; aMap
    {
      { 1, { &quot;One&quot;, false } } // assuming inner braces are a match for A ctor
    };
  }
  </code></pre>
  <p>Edit1:
  Fixed atomic constructor.</p>
  <p>Edit2:
  Copy ctor was missing (see reply to Eugene comment). Also, <code>atomic</code>'s <code>store</code> and <code>load</code> need to be used instead of assign in copy ctor.</p>