The default copy assignment operator cannot be generated for this class because it has a const member or a reference member or a member (or base class) with a private copy assignment operator.
Recovery
Ensure there are no const members, reference members or members with a private copy assignment operator.
You can generate this message only when you are running the compiler passes manually.
Recovery
Add non-option arguments.
Although "&1" is not a keyword, it is a special function that cannot be inlined or declared as static.
Recovery
Remove the inline or static specifier from the declaration of "&1".
A call has been made to a pure virtual function from a constructor or destructor. In such functions, the pure virtual function would not have been overridden by a derived class and a runtime error would occur.
Recovery
Remove the call to the pure virtual function.
A conversion function cannot be declared with a function or an array as its conversion type, since the type cannot be returned from the function.
Recovery
Declare the function as converting to a pointer to the function or the array element type.
The name is not a class or template name but the context implies that it should be.
Recovery
Change the name to a class or template name.
The instantiation of the specified template caused the messages, even though the line numbers in the messages refer to the original template declaration.
Recovery
This message supplies additional information for previously emitted messages. Refer to the descriptions of those messages for recovery information.
The instantiation of the specified template caused the message, even though the line number in the message refers to the original template declaration.
Recovery
This message supplies additional information for previously emitted messages. Refer to the descriptions of those messages for recovery information.
A constructor is required for the class but no user-defined constructor exists and the compiler could not generate one.
Recovery
Create a suitable constructor for conversion.
A copy assignment operator is required for the class but no user-defined copy assignment operator exists and the compiler could not generate one.
Recovery
Create a copy assignment operator.
A template name must not match the name of an existing template, class, function, object, value or type.
Recovery
Change one of the template names.
Either the argument is a type and the template has a non-type argument, or the argument is an expression and the template has a type argument.
Recovery
Ensure the argument matches the template.
An explicit definition of a template class cannot be given before the corresponding template definition.
Recovery
Move the template definition so that it occurs before any template class definitions.
Since an exact match is needed for template functions, an ellipsis cannot be used in the function argument list.
Recovery
Remove the ellipsis from the argument list.
You have provided an incorrect suffix for the floating point constant. Valid suffixes for floating point constants are L and F.
Recovery
Change the suffix for the floating point constant.
The expression has no side effects and produces a result that is not used.
Recovery
Remove the statement or use its result.
"/*" has been detected within a "/*" type comment. Nested comments are not allowed.
Recovery
Remove the imbedded "/*" and ensure that you are not missing the end of the other comment.
The specified macro name is predefined by the compiler and cannot be redefined with #define or undefined with #undef.
Recovery
Remove the definition expression or change the macro name.
The integer constant is a suffix letter that is not recognized as a valid suffix.
Recovery
Change the suffix to either "u" or "l".
Recovery
Remove the division by zero from the expression.
Recovery
Remove the modulus by zero from the expression.
Recovery
Move the static member so that it is defined at file scope.
You have not provided a constructor for the class, because the member or base class does not have a default constructor.
Recovery
Add a constructor.
The name is being declared in a member list but was previously declared outside the member list and then used in the member list.
Recovery
Change or remove one of the occurrences.
A temporary may only be used for conversion to a reference type when the reference is to a const type.
Recovery
Change to a const type.
A conversion from a pointer type to an integral type is only valid if the integral type is large enough to hold the pointer value.
Recovery
Remove the conversion from a pointer type to an integral type or use a larger integral type.
There is no constructor taking a single argument that can be called using the given expression.
Recovery
Change the expression.
A copy constructor is required for the conversion. No suitable user-defined copy constructor exists and the compiler could not generate one.
Recovery
Create a copy constructor for the conversion.
A constructor or conversion function is required for the conversion but no such constructor or function exists.
Recovery
Create a constructor or conversion function for the conversion.
An empty source or include file has been encountered while reading source. The source file name or include file name may not be spelled correctly.
Recovery
Check the file name.
A syntax error was found while parsing the program. The message identifies what the compiler expected and what it actually found. The compiler inserts the expected value and compilation continues.
Recovery
Correct the syntax.
No function matches each call argument as well as or better than all other functions.
Recovery
Change the function call so that it matches only one function.
The compiler detected an overloaded function or operator that is similar to another and is providing additional information.
Recovery
Ensure this is the desired match.
You cannot modify the access of the specified member because a member of the same name in the specified class hides it.
Recovery
Remove the access adjustment expression or unhide the member.
The specified name cannot be redeclared because it has already been used.
Recovery
Change or remove one of the declarations.
You cannot use both of the specified attributes in the same declaration.
Recovery
Remove the attributes.
A required option of the specified pragma directive is missing.
Recovery
Ensure all options for the pragma are present.
Recovery
Remove the invalid option.
The pragma parameter specified is either not a valid parameter, or is out of range.
Recovery
Remove the parameter or replace it with one within the range.
If a static function or inline member function is referenced in this compilation unit, it must be defined in the same compilation unit.
Recovery
Define the function in the same compilation unit it is referenced in.
More than one template for the function matches equally well with the argument list specified on the call.
Recovery
Change the call so that it matches only one template function.
An inline function must be defined in every compilation unit in which it is used.
Recovery
Define the inline function in this compilation unit.
The member function is being called indirectly for a const or volatile object but it has not been declared with the corresponding const or volatile attribute.
Recovery
Ensure that the function call and the function declaration match.
A class cannot inherit a type name that is the same as the class name.
Recovery
Change the name of either the derived class or the inherited class.
A class cannot inherit an enumerator with the same name as the class name.
Recovery
Change the name of either the derived class or the inherited enumerator.
n/a
The compiler limit for the length of a symbol has been exceeded.
Recovery
Shorten the symbol length.
If the result of the .* or ->* is a function, then that result can be used only as the operand for the function call operator ().
Recovery
Make the result the operand of the function call operator ().
If the result of the dot or arrow operator is a function, then that result can be used only as the operand for the function call operator ().
Recovery
Make the result the operand of the function call operator ().
const and reference members must be initialized in a constructor initializer list.
Recovery
Add a constructor to the class.
The virtual function table pointers are not set up until after the base classes are initialized.
Recovery
Remove the call to a virtual function in the base class initializer.
If you want to declare a linkage specification for a function, it must appear in the first declaration of the function.
Recovery
Add a linkage specification to the first declaration of the function
The destructor call is for a type that does not have a destructor. The call is ignored.
Recovery
Add a destructor to the type.
Because the friend class has not been declared yet, its name has been added to the scope of the class containing the friend declaration.
Recovery
If this is not intended, move the declaration of the friend class so that it appears before it is declared as a friend.
A friend function that is a member of another class cannot be defined inline in the member list.
Recovery
Define the body of the friend function at file scope.
An array of objects of a class with constructors uses the constructors in initialization. If there are fewer initializers in the list than elements in the array, the default constructor is used. If there is no default constructor the initializer list must be complete.
Recovery
Complete the initializer list or add a default constructor to the class.
The compiler limit for nested include files has been reached.
Recovery
Remove the nesting of one or more of the include files.
Recovery
Change the storage class of the anonymous class/struct/union to static.
Recovery
Move the definition of the pure virtual destructor so that it is not inline.
Recovery
Correct the braces on the initializer.
The octal integer constant contains an '8' or a '9'. Octal numbers include 0 through 7.
Recovery
Ensure that the octal integer constant is valid.
For member functions, names in default argument expressions are bound at the end of the class declaration. Calling a member function as part of a second member function's default argument is an error if the first member function's default arguments have not been checked and the call does not specify all of the arguments.
Recovery
Specify all the arguments for the function.
An operator function has been specified with an ellipsis (...), but since the number of operands of an operator are fixed, an ellipsis is not allowed.
Recovery
Remove the ellipsis, and specify the correct number of operands.
A syntax error was found while parsing the program. The message identifies what the compiler expected and what it actually found.
Recovery
Correct the syntax error.
The compiler detected a character constant that was not terminated before an end-of-line character was found.
Recovery
End the character constant or use "\" to continue it on the next line. The "\" must be the last character on the line.
To declare a pure virtual function use an initializer of 0.
Recovery
Set the virtual function initializer to 0.
Access of the class has changed.
Recovery
Ensure this change is as intended.
Recovery
Ensure this qualification is intended.
You have provided invalid character(s) after the backslash that does not represent an escape sequence. Therefore, the backslash is ignored and the rest of the escape sequence is read as is.
Recovery
Ensure the escape sequence is valid.
Recovery
Ensure this action is intended.
More than one conversion function could be used to perform the specified conversion.
Recovery
Create a new conversion function for this conversion or change one of the types.
Recovery
Ensure this is the intended match.
Only an object of a class with no constructors, no private or protected members, no virtual functions and no base classes can be initialized with an initializer list.
Recovery
Remove the class from the initializer list.
A pointer to a class B may be explicitly converted to a pointer to a class D that has B as a direct or indirect base class, only if an unambiguous conversion from D to B exists, and B is not a virtual base class.
Recovery
Remove the conversion of the pointer.
Arguments passed using an ellipsis are only accessible if there is an argument preceding the ellipsis and the preceding argument is not passed by reference.
Recovery
Ensure that there is an argument preceding the ellipsis and that the preceding argument is not passed by reference.
A member function cannot be redeclared in the class definition.
Recovery
Remove one of the declarations.
The left hand side of the assignment operator is an expression referring to a "const" location. For example, in "a.b", either "b" is a "const" member or "a" is a "const" variable.
Recovery
Remove the assignment.
The left hand side of the assignment operator is a variable with the "const" attribute. "const" variables may be initialized once at the point where they are declared, but may not be subsequently assigned new values.
Recovery
Remove the assignment to the const variable.
The part of this member declaration up to the colon " :colon." appears to be a declaration of a bit-field, but the constant expression expected after the colon was either not found or incorrectly formed.
Recovery
Correct the syntax error.
The return type for the "operator->" must be a pointer to a class type, a class type, or a reference to a class type. If it is a class or reference, the class must be previously defined and must contain an "operator->" function.
Recovery
Change the return type for the "operator->".
The class has one or more virtual function tables. A definition of each table will be generated in the current compilation.
Recovery
Ensure this is the desired result.
The class has one or more virtual function tables. None will be defined in the current compilation, but will be defined in the compilation containing the definition of the specified member function.
Recovery
Ensure this is the desired result.
Recovery
Ensure this is the desired result.
The previous message applies to the specified argument number. This message does not indicate another error or warning, it indicates which argument of the function call is the subject of the previous message.
A temporary may only be used for conversion to a reference type when the reference is to a const type. This is a warning rather than an error message because the "compat" language level is active.
Recovery
Change the reference so that it is to a const type.
The address of a local variable may not be valid once control is passed out of the function.
Recovery
Declare the variable in the calling function or as a global variable, or change the return expression to not use the variable.
Recovery
Remove the keyword.
Recovery
Remove the directive or place it before the first C++ statement in the program.
The pointer to member function must be associated with an object or a pointer to an object when it is used with the function call operator ().
Recovery
Remove the pointer or associate it with an object.
Recovery
Remove or change one of the declarations.
Recovery
Remove the option or place it before the first statement in the C++ program.
A reference to a member of "&1" will be ambiguous because it is inherited from two different paths.
Recovery
Remove the indirect inheritance.
A class is undefined until the definition of its tag has been completed. A class tag is undefined when the list describing the name and type of its members has not been specified. The definition of the tag must be given before the operator is applied to the class.
Recovery
Complete the definition of the class before applying an operator to it.
A member in the derived class hides a virtual function member in a base class.
Recovery
Ensure the hiding of the virtual function member is intended.
A function name is required in this context. The specified name has been declared but it is not the name of a function.
Recovery
Check the spelling. If necessary, change to a function name.
The two functions are ambiguous and the virtual function call mechanism will not be able to choose the correct one at runtime.
Recovery
Remove one of the virtual functions.
Two or more "this" addresses are possible for this virtual function. The virtual function call mechanism will not be able to determine the correct address at runtime.
Recovery
Remove the "this" expression or change the function name.
More than one conversion function could be applied to perform the conversion from the specified type.
Recovery
Create a new conversion function or remove the conversion.
The specified function has a storage class that is not allowed in the context that the function is declared in.
Recovery
Remove the declaration or change the storage class of the function.
![]()
Summary of Compiler Error Messages