Error map

discards qualifiers C++: error: passing 'const X' as 'this' argument discards qualifiers [-fpermissive]

C/C++ · layer 4, Application & API

Open the full error page →

Centre: this error. First ring: errors it is linked with (7). Outer ring: what those are linked with. Colours show the layer of a request each error belongs to. Click any dot to re-centre the map on it; hover to follow its connections. The centre dot opens the error page.

discards qualifiers — C++: error: passing 'const X' as 'this' argument discards qualifiers [-fpermissive] (C/C++)discards qu…no match for 'operator' — C++: error: no match for 'operator<<' (operand types are 'std::ostream' and 'X') (C/C++)no match for 'opera…invalid conversion from — C++: error: invalid conversion from 'const char*' to 'char*' [-fpermissive] (C/C++)invalid conversion …use of deleted function — C++: error: use of deleted function 'X::X(const X&)' — copying a non-copyable type (C/C++)use of deleted func…incomplete type — C++: error: invalid use of incomplete type 'class X' — forward declaration only (C/C++)incomplete typecall of overloaded is ambiguous — C++: error: call of overloaded 'f(int)' is ambiguous (C/C++)call of overloaded …cannot declare variable to be of abstract type — C++: error: cannot declare variable 'x' to be of abstract type 'Shape' (pure virtual functions) (C/C++)cannot declare vari…is private within this context — C++: error: 'int X::secret' is private within this context (C/C++)is private within t…no matching function for call to — C++: error: no matching function for call to 'f(int, const char*)' (C/C++)no matching functio…template argument deduction/substitution failed — C++: error: template argument deduction/substitution failed / couldn't deduce template parameter (C/C++)template argument d…need typename before dependent name — C++: error: need 'typename' before 'T::iterator' because 'T' is a dependent scope (C/C++)need typename befor…does not name a type — C++: error: 'string' does not name a type (C/C++)does not name a typenarrowing conversion — C++: error: narrowing conversion of 'x' from 'int' to 'char' inside { } [-Wnarrowing] (C/C++)narrowing conversionISO C++ forbids comparison between pointer and integer — C++: error: ISO C++ forbids comparison between pointer and integer [-fpermissive] (C/C++)ISO C++ forbids com…double free or corruption — C/C++: free(): double free detected / double free or corruption (out) — Aborted (core dumped) (C/C++)double free or corr…redefinition of — C++: error: redefinition of 'class X' / multiple definition — missing include guard (C/C++)redefinition ofimplicit declaration of function — C: warning: implicit declaration of function 'foo' [-Wimplicit-function-declaration] (C/C++)implicit declaratio…multiple definition of — C/C++: multiple definition of `x'; first defined here — ld returned 1 exit status (C/C++)multiple definition…E0308 — Rust: error[E0308]: mismatched types — expected `X`, found `Y` (Rust)E0308stray in program — C/C++: error: stray '\342' in program (smart quotes or invisible characters) (C/C++)stray in programcomparison of integers of different signs — C/C++: warning: comparison of integer expressions of different signedness: 'int' and 'size_t' [-Wsign-compare] (C/C++)comparison of integ…control reaches end of non-void function — C/C++: warning: control reaches end of non-void function [-Wreturn-type] (C/C++)control reaches end…format expects argument of type — C: warning: format '%d' expects argument of type 'int', but argument 2 has type 'long int' [-Wformat=] (C/C++)format expects argu…undefined reference to vtable — C++: undefined reference to `vtable for X' — virtual function not defined (C/C++)undefined reference…AddressSanitizer: heap-buffer-overflow — C/C++: ==ERROR: AddressSanitizer: heap-buffer-overflow on address — READ/WRITE of size N (C/C++)AddressSanitizer: h…AddressSanitizer: heap-use-after-free — C/C++: ==ERROR: AddressSanitizer: heap-use-after-free on address — memory used after delete/free (C/C++)AddressSanitizer: h…

Directly related (7)

no match for 'operator'C/C++

C++: error: no match for 'operator<<' (operand types are 'std::ostream' and 'X')

You used an operator on a type that does not define it — most often printing your own class with `

invalid conversion fromC/C++

C++: error: invalid conversion from 'const char*' to 'char*' [-fpermissive]

C++ forbids silently dropping `const` or converting between unrelated pointer types — typically a string literal assigned to `cha…

use of deleted functionC/C++

C++: error: use of deleted function 'X::X(const X&)' — copying a non-copyable type

The code needs a function (usually a copy constructor or assignment) that was deleted explicitly or implicitly, as for `std::uniq…

incomplete typeC/C++

C++: error: invalid use of incomplete type 'class X' — forward declaration only

You used a class that has only been forward-declared (so its size and members are unknown) where the full definition is required.

call of overloaded is ambiguousC/C++

C++: error: call of overloaded 'f(int)' is ambiguous

Two or more overloads fit equally well, so the compiler refuses to guess which function you meant.

cannot declare variable to be of abstract typeC/C++

C++: error: cannot declare variable 'x' to be of abstract type 'Shape' (pure virtual functions)

You tried to create an object of a class that still has pure virtual functions; only a derived class that overrides all of them c…

is private within this contextC/C++

C++: error: 'int X::secret' is private within this context

Code outside the class tried to use a private (or protected) member.

Two steps away (18)

no matching function for call toC/C++

C++: error: no matching function for call to 'f(int, const char*)'

No overload of the function accepts the arguments you passed — wrong count, wrong types, or a missing conversion.

template argument deduction/substitution failedC/C++

C++: error: template argument deduction/substitution failed / couldn't deduce template parameter

The compiler could not work out the template arguments from your call — the arguments disagree, the type can't be deduced, or a c…

need typename before dependent nameC/C++

C++: error: need 'typename' before 'T::iterator' because 'T' is a dependent scope

Inside a template, a name like `T::iterator` could be a type or a value, so C++ requires the `typename` keyword to say it is a ty…

does not name a typeC/C++

C++: error: 'string' does not name a type

Where the compiler expected a type, it found a name it does not know as one — a missing header, namespace, or class declared late…

narrowing conversionC/C++

C++: error: narrowing conversion of 'x' from 'int' to 'char' inside { } [-Wnarrowing]

Brace initialisation `{}` refuses conversions that can lose data, such as `double` to `int` or a runtime `int` to `char`.

ISO C++ forbids comparison between pointer and integerC/C++

C++: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]

You compared a string literal or pointer with a character or integer — typically `ch == "y"` instead of `ch == 'y'`.

double free or corruptionC/C++

C/C++: free(): double free detected / double free or corruption (out) — Aborted (core dumped)

Memory was freed twice or the heap was corrupted (buffer overflow, freeing a non-heap pointer), so glibc aborted the program.

redefinition ofC/C++

C++: error: redefinition of 'class X' / multiple definition — missing include guard

The same class, struct or function body was included twice in one translation unit because the header has no include guard.

implicit declaration of functionC/C++

C: warning: implicit declaration of function 'foo' [-Wimplicit-function-declaration]

In C you called a function the compiler has not seen declared — usually a missing `#include`. Newer compilers treat it as an erro…

multiple definition ofC/C++

C/C++: multiple definition of `x'; first defined here — ld returned 1 exit status

The linker found the same function or global variable defined in two object files — usually something defined in a header.

E0308Rust

Rust: error[E0308]: mismatched types — expected `X`, found `Y`

A value’s type doesn’t match what the context expects — common with &str vs String, Option/Result vs plain values, and integer ty…

stray in programC/C++

C/C++: error: stray '\342' in program (smart quotes or invisible characters)

The source file contains a character the compiler does not recognise, typically curly quotes or a non-breaking space pasted from…

comparison of integers of different signsC/C++

C/C++: warning: comparison of integer expressions of different signedness: 'int' and 'size_t' [-Wsign-compare]

A signed integer is compared with an unsigned one; the signed value is converted to unsigned, so a negative number becomes huge.

control reaches end of non-void functionC/C++

C/C++: warning: control reaches end of non-void function [-Wreturn-type]

A function that promises a return value can finish without returning one on some path — undefined behaviour in C++.

format expects argument of typeC/C++

C: warning: format '%d' expects argument of type 'int', but argument 2 has type 'long int' [-Wformat=]

The `printf`/`scanf` format specifier does not match the argument's type, which is undefined behaviour and prints garbage or cras…

undefined reference to vtableC/C++

C++: undefined reference to `vtable for X' — virtual function not defined

The linker cannot find the class's virtual table, which means at least one virtual member function was declared but never defined…

AddressSanitizer: heap-buffer-overflowC/C++

C/C++: ==ERROR: AddressSanitizer: heap-buffer-overflow on address — READ/WRITE of size N

AddressSanitizer caught a read or write just outside a heap block — an array index or length that is off by one or more.

AddressSanitizer: heap-use-after-freeC/C++

C/C++: ==ERROR: AddressSanitizer: heap-use-after-free on address — memory used after delete/free

The program read or wrote a heap block after it had been freed; ASan shows who freed it and where it was allocated.