Compiler errors C2600 Through C2699
The articles in this section of the documentation explain a subset of the error messages that are generated by the compiler.
Important
The Visual Studio compilers and build tools can report many kinds of errors and warnings. After an error or warning is found, the build tools may make assumptions about code intent and attempt to continue, so that more issues can be reported at the same time. If the tools make the wrong assumption, later errors or warnings may not apply to your project. When you correct issues in your project, always start with the first error or warning that's reported, and rebuild often. One fix may make many subsequent errors go away.
To get help on a particular diagnostic message in Visual Studio, select it in the Output window and press the F1 key. Visual Studio opens the documentation page for that error, if one exists. You can also use the search tool at the top of the page to find articles about specific errors or warnings. Or, browse the list of errors and warnings by tool and type in the table of contents on this page.
Note
Not every Visual Studio error or warning is documented. In many cases, the diagnostic message provides all of the information that's available. If you landed on this page when you used F1 and you think the error or warning message needs additional explanation, let us know. You can use the feedback buttons on this page to raise a documentation issue on GitHub. If you think the error or warning is wrong, or you've found another problem with the toolset, report a product issue on the Developer Community site. You can also send feedback and enter bugs within the IDE. In Visual Studio, go to the menu bar and choose Help > Send Feedback > Report a Problem, or submit a suggestion by using Help > Send Feedback > Send a Suggestion. Some compiler error topics were created that are not emitted by the compiler and now redirect to this page instead.
You may find additional assistance for errors and warnings in Microsoft Learn Q&A forums. Or, search for the error or warning number on the Visual Studio C++ Developer Community site. You can also search Stack Overflow to find solutions.
For links to additional help and community resources, see Visual C++ Help and Community.
Error messages
Error | Message |
---|---|
Compiler error C2600 | 'function': cannot define a compiler-generated special member function (must be declared in the class first) |
Compiler error C2601 | 'function': local function definitions are illegal |
Compiler error C2602 | 'class::identifier' is not a member of a base class of 'class' |
Compiler error C2603 | 'function': Too many block scope static objects with constructor/destructors in function |
Compiler error C2604 | 'identifier': Cannot implement more than one interface method |
Compiler error C2605 | 'identifier': this method is reserved within a managed/WinRT class |
Compiler error C2606 | 'class1': cannot re-implement 'member', as it is inherited from runtime base 'class2' |
Compiler error C2607 | static assertion failed |
Compiler error C2608 | Obsolete. |
Compiler error C2609 | Obsolete. |
Compiler error C2610 | 'class::member': is not a special member function which can be defaulted |
Compiler error C2611 | 'token': illegal following '~' (expected identifier) |
Compiler error C2612 | trailing 'character' illegal in base/member initializer list |
Compiler error C2613 | trailing 'character' illegal in base class list |
Compiler error C2614 | 'class': illegal member initialization: 'identifier' is not a base or member |
Compiler error C2615 | Obsolete. |
Compiler error C2616 | 'conversion': cannot implicitly convert a non-lvalue 'type1' to a 'type2' that is not const |
Compiler error C2617 | 'function': inconsistent return statement |
Compiler error C2618 | Obsolete. |
Compiler error C2619 | 'identifier': a static data member is not allowed in an anonymous struct/union |
Compiler error C2620 | Obsolete. |
Compiler error C2621 | Obsolete. |
Compiler error C2622 | Obsolete. |
Compiler error C2623 | Obsolete. |
Compiler error C2624 | 'scope::type': local classes cannot be used to declare 'extern' variables |
Compiler error C2625 | 'identifier': illegal union member; type 'type' is reference type |
Compiler error C2626 | 'identifier': a private/protected data member is not allowed in an anonymous struct/union |
Compiler error C2627 | 'function': member function not allowed in anonymous union |
Compiler error C2628 | 'type1' followed by 'type2' is illegal (did you forget a ';'?) |
Compiler error C2629 | 'identifier': an anonymous struct/union cannot declare a nested type |
Compiler error C2630 | 'symbol' found in what should be a comma-separated list |
Compiler error C2631 | 'identifier': a class or enum cannot be defined in an alias template |
Compiler error C2632 | 'type1' followed by 'type2' is illegal |
Compiler error C2633 | 'identifier': 'inline' is the only legal storage class for constructors |
Compiler error C2634 | 'class::member': pointer to reference member is illegal |
Compiler error C2635 | cannot convert a 'type1*' to a 'type2*'; conversion from a virtual base class is implied |
Compiler error C2636 | 'identifier': pointer to reference member is illegal |
Compiler error C2637 | 'identifier': cannot modify pointers to data members |
Compiler error C2638 | 'identifier': __based modifier illegal on pointer to member |
Compiler error C2639 | Obsolete. |
Compiler error C2640 | 'identifier': __based modifier illegal on reference |
Compiler error C2641 | Obsolete. |
Compiler error C2642 | Obsolete. |
Compiler error C2643 | Obsolete. |
Compiler error C2644 | Obsolete. |
Compiler error C2645 | no qualified name for pointer to member (found ':: *') |
Compiler error C2646 | an anonymous struct/union at global or namespace scope must be declared static |
Compiler error C2647 | 'operator': cannot dereference a 'type1' on a 'type2' |
Compiler error C2648 | 'identifier': use of member as default parameter requires static member |
Compiler error C2649 | 'identifier': is not a 'class/struct/union' |
Compiler error C2650 | 'operator': cannot be a virtual function |
Compiler error C2651 | 'type': left of '::' must be a class, struct or union |
Compiler error C2652 | 'identifier': illegal copy constructor: first parameter must not be a 'type' |
Compiler error C2653 | 'identifier': is not a class or namespace name |
Compiler error C2654 | 'identifier': attempt to access member outside a member function |
Compiler error C2655 | 'identifier': definition or redeclaration illegal in current scope |
Compiler error C2656 | 'function': function not allowed as a bit field |
Compiler error C2657 | 'class::*' found at the start of a statement (did you forget to specify a type?) |
Compiler error C2658 | 'identifier': redefinition in anonymous struct/union |
Compiler error C2659 | 'operator': function as left operand |
Compiler error C2660 | 'function': function does not take number arguments |
Compiler error C2661 | 'function': no overloaded function takes number arguments |
Compiler error C2662 | 'function': cannot convert 'this' pointer from 'type1' to 'type2' |
Compiler error C2663 | 'function': number overloads have no legal conversion for 'this' pointer |
Compiler error C2664 | 'function': cannot convert argument number from 'type1' to 'type2' |
Compiler error C2665 | 'function': none of the number overloads could convert all the argument types |
Compiler error C2666 | 'function': number overloads have similar conversions |
Compiler error C2667 | 'function': none of number overloads have a best conversion |
Compiler error C2668 | 'function': ambiguous call to overloaded function |
Compiler error C2669 | member function not allowed in anonymous union |
Compiler error C2670 | 'function': the function template cannot convert parameter number from type 'type' |
Compiler error C2671 | 'function': static member functions do not have 'this' pointers |
Compiler error C2672 | 'function': no matching overloaded function found |
Compiler error C2673 | 'function': global functions do not have 'this' pointers |
Compiler error C2674 | a generic declaration is not allowed in this context |
Compiler error C2675 | unary 'operator': 'type' does not define this operator or a conversion to a type acceptable to the predefined operator |
Compiler error C2676 | binary 'operator': 'type' does not define this operator or a conversion to a type acceptable to the predefined operator |
Compiler error C2677 | binary 'operator': no global operator found which takes type 'type' (or there is no acceptable conversion) |
Compiler error C2678 | binary 'operator': no operator found which takes a left-hand operand of type 'type' (or there is no acceptable conversion) |
Compiler error C2679 | binary 'operator': no operator found which takes a right-hand operand of type 'type' (or there is no acceptable conversion) |
Compiler error C2680 | 'type': invalid target type for cast |
Compiler error C2681 | 'type': invalid expression type for cast |
Compiler error C2682 | cannot use 'cast' to convert from 'type1' to 'type2' |
Compiler error C2683 | 'cast': 'type' is not a polymorphic type |
Compiler error C2684 | 'declarator': deleted and defaulted functions are not supported in managed/WinRT classes |
Compiler error C2685 | 'declarator': deleted and defaulted functions are not supported with explicit restriction specifiers |
Compiler error C2686 | cannot overload static and non-static member functions with the same parameter types |
Compiler error C2687 | 'type': exception-declaration cannot be 'void' or denote an incomplete type or pointer or reference to an incomplete type |
Compiler error C2688 | 'type::member': covariant returns with multiple or virtual inheritance not supported for varargs functions |
Compiler error C2689 | 'function': a friend function cannot be defined within a local class |
Compiler error C2690 | 'operator': cannot perform pointer arithmetic on a managed/WinRT array |
Compiler error C2691 | 'type': a managed/WinRT array cannot have this element type |
Compiler error C2692 | 'function': fully prototyped functions required in C compiler with the '/clr' option |
Compiler error C2693 | 'operator': illegal comparison for references to a managed/WinRT array |
Compiler error C2694 | 'override_function': overriding virtual function has less restrictive exception specification than base class virtual member function 'base_function' |
Compiler error C2695 | 'override_function': overriding virtual function differs from 'base_function' only by calling convention |
Compiler error C2696 | Cannot create a temporary object of managed/WinRT type 'type' |
Compiler error C2697 | Obsolete. |
Compiler error C2698 | the using-declaration for 'declaration1' cannot co-exist with the existing using-declaration for 'declaration2' |
See also
C/C++ Compiler and build tools errors and warnings
Compiler errors C2000 - C3999, C7000 - C7999