Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Export (0) Print
Expand All
Expand Minimize

Compiler Error C2621

member 'identifier' of union 'union' has copy constructor

A union member cannot have a copy constructor.

The following sample generates C2621:

// C2621.cpp
class A {
   A( const A& );   // A has a copy constructor
};
union U {
   A a;   // C2621
};

C2621 can also be generates for code that compiled in Visual C++ 6.0, but that no longer compiles. The Visual C++ 6.0 Standard C++ Library did not use a union of its template parameters. Class types that have a copy constructor cannot be a template parameter for basic_string.

The following sample generates C2621:

// C2621b.cpp
// compile with: /EHsc
#include <vector>
#include <string>
using namespace std;
typedef vector<int> mytype;

int main() {
   basic_string < mytype > b;   // C2621 class type (vector) with
                               //  copy constructor as template param
   basic_string < char > c;   // OK
}
Show:
© 2015 Microsoft