title: Why am I not provided with a default copy constructor from a volatile?
body: <p>This code:</p>
  
  <pre><code>class X {
    int member;  
  };
  
  volatile X a;
  X b = a;
  </code></pre>
  
  <p>Fails with the error:</p>
  
  <pre><code>prog.cpp:6:7: error: no matching function for call to ‘X::X(volatile X&amp;)’
  prog.cpp:6:7: note: candidates are:
  prog.cpp:1:7: note: X::X()
  prog.cpp:1:7: note:   candidate expects 0 arguments, 1 provided
  prog.cpp:1:7: note: X::X(const X&amp;)
  prog.cpp:1:7: note:   no known conversion for argument 1 from ‘volatile X’ to ‘const X&amp;’
  </code></pre>
  
  <p>Is there any way I can get the compiler to generate a volatile copy constructor for me?</p>