Compiler Warning (level 3) C4522


The new home for Visual Studio documentation is Visual Studio 2017 Documentation on

The latest version of this topic can be found at Compiler Warning (level 3) C4522.

class' : multiple assignment operators specified

The class has multiple assignment operators of a single type. This warning is informational; the constructors are callable in your program.

Use the warning pragma to suppress this warning.

The following sample generates C4522.

// C4522.cpp  
// compile with: /EHsc /W3  
#include <iostream>  
using namespace std;  
class A {  
   A& operator=( A & o ) { cout << "A&" << endl; return *this; }  
   A& operator=( const A &co ) { cout << "const A&" << endl; return *this; }   // C4522  
int main() {  
   A o1, o2;  
   o2 = o1;  
   const A o3;  
   o1 = o3;