Skip to content

Structure error references in range [C2791, C2820] #5637

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 4 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 8 additions & 5 deletions docs/error-messages/compiler-errors-2/compiler-error-c2791.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
---
description: "Learn more about: Compiler Error C2791"
title: "Compiler Error C2791"
ms.date: "11/04/2016"
description: "Learn more about: Compiler Error C2791"
ms.date: 11/04/2016
f1_keywords: ["C2791"]
helpviewer_keywords: ["C2791"]
ms.assetid: 938ad1fb-75d9-4ce2-ad92-83d6249005b5
---
# Compiler Error C2791

illegal use of 'super': 'class' does not have any base classes
> illegal use of 'super': 'class' does not have any base classes

## Remarks

The keyword [super](../../cpp/super.md) was used within the context of a member function of a class that does not have any base classes.

The following sample generates C2791:
## Example

The following example generates C2791:

```cpp
// C2791.cpp
Expand Down
13 changes: 8 additions & 5 deletions docs/error-messages/compiler-errors-2/compiler-error-c2792.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
---
description: "Learn more about: Compiler Error C2792"
title: "Compiler Error C2792"
ms.date: "11/04/2016"
description: "Learn more about: Compiler Error C2792"
ms.date: 11/04/2016
f1_keywords: ["C2792"]
helpviewer_keywords: ["C2792"]
ms.assetid: 392cf748-4f5e-4e62-a364-3118d5658408
---
# Compiler Error C2792

'super' : this keyword must be followed by '::'
> 'super' : this keyword must be followed by '::'

## Remarks

The only token that can follow the keyword **`__super`** is `::`.

The following sample generates C2792:
## Example

The following example generates C2792:

```cpp
// C2792.cpp
Expand Down
13 changes: 8 additions & 5 deletions docs/error-messages/compiler-errors-2/compiler-error-c2793.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
---
description: "Learn more about: Compiler Error C2793"
title: "Compiler Error C2793"
ms.date: "11/04/2016"
description: "Learn more about: Compiler Error C2793"
ms.date: 11/04/2016
f1_keywords: ["C2793"]
helpviewer_keywords: ["C2793"]
ms.assetid: ce35f4e8-c357-40ca-95c4-15ff001ad69d
---
# Compiler Error C2793

'token' : unexpected token following '::', identifier or keyword 'operator' expected
> 'token' : unexpected token following '::', identifier or keyword 'operator' expected

## Remarks

The only tokens that can follow `__super::` are an identifier or the keyword **`operator`**.

The following sample generates C2793
## Example

The following example generates C2793

```cpp
// C2793.cpp
Expand Down
13 changes: 8 additions & 5 deletions docs/error-messages/compiler-errors-2/compiler-error-c2794.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
---
description: "Learn more about: Compiler Error C2794"
title: "Compiler Error C2794"
ms.date: "11/04/2016"
description: "Learn more about: Compiler Error C2794"
ms.date: 11/04/2016
f1_keywords: ["C2794"]
helpviewer_keywords: ["C2794"]
ms.assetid: d508191c-9044-4c6a-9119-4bca668c0b93
---
# Compiler Error C2794

'function' : is not a member of any direct or indirect base class of 'class'
> 'function' : is not a member of any direct or indirect base class of 'class'

## Remarks

You tried to use [super](../../cpp/super.md) to call a nonexistent member function.

The following sample generates C2794
## Example

The following example generates C2794

```cpp
// C2794.cpp
Expand Down
9 changes: 5 additions & 4 deletions docs/error-messages/compiler-errors-2/compiler-error-c2795.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
---
description: "Learn more about: Compiler Error C2795"
title: "Compiler Error C2795"
ms.date: "11/04/2016"
description: "Learn more about: Compiler Error C2795"
ms.date: 11/04/2016
f1_keywords: ["C2795"]
helpviewer_keywords: ["C2795"]
ms.assetid: 8cd8c7fe-2add-4871-85f7-9a6afe4ac588
---
# Compiler Error C2795

'super::function' is not a member function
> 'super::function' is not a member function

## Remarks

This error message appears whenever you try to use [super](../../cpp/super.md) to access a member other than a member function.
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,14 @@ helpviewer_keywords: ["C2797"]
---
# Compiler Error C2797

(Obsolete) List initialization inside member initializer list or non-static data member initializer is not implemented.
> (Obsolete) List initialization inside member initializer list or non-static data member initializer is not implemented.

## Remarks

This warning is obsolete in Visual Studio 2015. In Visual Studio 2013 and earlier versions, the Microsoft C++ compiler does not implement list initialization inside either a member initializer list or a non-static data member initializer. Before Visual Studio 2013 Update 3, this was silently converted to a function call, which could lead to bad code generation. Visual Studio 2013 Update 3 reports this as an error.

## Examples

This example generates C2797:

```cpp
Expand Down
13 changes: 8 additions & 5 deletions docs/error-messages/compiler-errors-2/compiler-error-c2798.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,25 @@
---
description: "Learn more about: Compiler Error C2798"
title: "Compiler Error C2798"
ms.date: "11/04/2016"
description: "Learn more about: Compiler Error C2798"
ms.date: 11/04/2016
f1_keywords: ["C2798"]
helpviewer_keywords: ["C2798"]
ms.assetid: fb0cd861-b228-4f81-8090-e28344a727e0
---
# Compiler Error C2798

'super::member' is ambiguous
> 'super::member' is ambiguous

## Remarks

Multiple inherited structures contain the member you referenced with [super](../../cpp/super.md). You could fix the error by either:

- Removing B1 or B2 from the inheritance list of D.

- Changing the name of the data member in B1 or B2.

The following sample generates C2798:
## Example

The following example generates C2798:

```cpp
// C2798.cpp
Expand Down
13 changes: 8 additions & 5 deletions docs/error-messages/compiler-errors-2/compiler-error-c2800.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
---
description: "Learn more about: Compiler Error C2800"
title: "Compiler Error C2800"
ms.date: "11/04/2016"
description: "Learn more about: Compiler Error C2800"
ms.date: 11/04/2016
f1_keywords: ["C2800"]
helpviewer_keywords: ["C2800"]
ms.assetid: a2f1a590-9fe6-44cb-ad09-b4505ef47c6a
---
# Compiler Error C2800

'operator operator' cannot be overloaded
> 'operator operator' cannot be overloaded

## Remarks

The following operators cannot be overloaded: class member access (`.`), pointer to member (`.*`), scope resolution (`::`), conditional expression (`? :`), and **`sizeof`**.

The following sample generates C2800:
## Example

The following example generates C2800:

```cpp
// C2800.cpp
Expand Down
13 changes: 8 additions & 5 deletions docs/error-messages/compiler-errors-2/compiler-error-c2801.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
---
description: "Learn more about: Compiler Error C2801"
title: "Compiler Error C2801"
ms.date: "11/04/2016"
description: "Learn more about: Compiler Error C2801"
ms.date: 11/04/2016
f1_keywords: ["C2801"]
helpviewer_keywords: ["C2801"]
ms.assetid: 35dfc7ea-9e37-4e30-baa1-944dc61302f5
---
# Compiler Error C2801

'operator operator' must be a non-static member
> 'operator operator' must be a non-static member

## Remarks

The following operators can be overloaded only as nonstatic members:

Expand All @@ -26,7 +27,9 @@ Possible C2801 causes:

- Overloaded operator is declared **`static`**.

- The following sample generates C2801:
## Example

- The following example generates C2801:
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another one, see #5583 (comment).


```cpp
// C2801.cpp
Expand Down
13 changes: 8 additions & 5 deletions docs/error-messages/compiler-errors-2/compiler-error-c2802.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
---
description: "Learn more about: Compiler Error C2802"
title: "Compiler Error C2802"
ms.date: "11/04/2016"
description: "Learn more about: Compiler Error C2802"
ms.date: 11/04/2016
f1_keywords: ["C2802"]
helpviewer_keywords: ["C2802"]
ms.assetid: 08b68c0e-9382-40ac-8949-39a7a2749e05
---
# Compiler Error C2802

static member 'operator operator' has no formal parameters
> static member 'operator operator' has no formal parameters

## Remarks

An operator declared by a **`static`** member function must have at least one parameter.

The following sample generates C2802:
## Example

The following example generates C2802:

```cpp
// C2802.cpp
Expand Down
13 changes: 8 additions & 5 deletions docs/error-messages/compiler-errors-2/compiler-error-c2803.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,25 @@
---
description: "Learn more about: Compiler Error C2803"
title: "Compiler Error C2803"
ms.date: "11/04/2016"
description: "Learn more about: Compiler Error C2803"
ms.date: 11/04/2016
f1_keywords: ["C2803"]
helpviewer_keywords: ["C2803"]
ms.assetid: 2cdbe374-8cc4-4c4e-ba15-062a7479e937
---
# Compiler Error C2803

'operator operator' must have at least one formal parameter of class type
> 'operator operator' must have at least one formal parameter of class type

## Remarks

The overloaded operator lacks a parameter of class type.

You need to pass at least one parameter by reference (not using pointers, but references) or by value to be able to write "a < b" (a and b being of type class A).

If both parameters are pointers it will be a pure comparison of pointer addresses and will not use the user-defined conversion.

The following sample generates C2803:
## Example

The following example generates C2803:

```cpp
// C2803.cpp
Expand Down
13 changes: 7 additions & 6 deletions docs/error-messages/compiler-errors-2/compiler-error-c2804.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,21 @@
---
description: "Learn more about: Compiler Error C2804"
title: "Compiler Error C2804"
ms.date: "11/04/2016"
description: "Learn more about: Compiler Error C2804"
ms.date: 11/04/2016
f1_keywords: ["C2804"]
helpviewer_keywords: ["C2804"]
ms.assetid: b066e563-cca4-450c-8ba7-3b0d7a89f3ea
---
# Compiler Error C2804

binary 'operator operator' has too many parameters
> binary 'operator operator' has too many parameters

## Remarks

The overloaded binary operator member function is declared with more than one parameter. The first operand parameter of a binary operator member function, whose type is the operator's enclosing type, is implied.

## Examples

The following sample generates C2804 and shows how to fix it.
The following example generates C2804 and shows how to fix it.

```cpp
// C2804.cpp
Expand All @@ -31,7 +32,7 @@ int main() {
}
```

The following sample generates C2804 and shows how to fix it.
The following example generates C2804 and shows how to fix it.

```cpp
// C2804_2.cpp
Expand Down
13 changes: 8 additions & 5 deletions docs/error-messages/compiler-errors-2/compiler-error-c2805.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
---
description: "Learn more about: Compiler Error C2805"
title: "Compiler Error C2805"
ms.date: "11/04/2016"
description: "Learn more about: Compiler Error C2805"
ms.date: 11/04/2016
f1_keywords: ["C2805"]
helpviewer_keywords: ["C2805"]
ms.assetid: c997dc56-e199-442f-b94e-ac551ec9b015
---
# Compiler Error C2805

binary 'operator operator' has too few parameters
> binary 'operator operator' has too few parameters

## Remarks

The binary operator has no parameters.

The following sample generates C2805:
## Example

The following example generates C2805:

```cpp
// C2805.cpp
Expand Down
13 changes: 8 additions & 5 deletions docs/error-messages/compiler-errors-2/compiler-error-c2806.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
---
description: "Learn more about: Compiler Error C2806"
title: "Compiler Error C2806"
ms.date: "11/04/2016"
description: "Learn more about: Compiler Error C2806"
ms.date: 11/04/2016
f1_keywords: ["C2806"]
helpviewer_keywords: ["C2806"]
ms.assetid: 7c9ff1f4-1590-4c47-991d-b1075a173b48
---
# Compiler Error C2806

'operator operator' has too many formal parameters
> 'operator operator' has too many formal parameters

## Remarks

An overloaded operator has too many parameters.

The following sample generates C2806:
## Example

The following example generates C2806:

```cpp
// C2806.cpp
Expand Down
Loading