Was macht Auto, das über den tatsächlichen Klassennamen hinausgeht? [Duplikat]C++

Programme in C++. Entwicklerforum
Anonymous
 Was macht Auto, das über den tatsächlichen Klassennamen hinausgeht? [Duplikat]

Post by Anonymous »

Der folgende Code funktioniert einwandfrei für den Operator+ für MyClass .

Code: Select all

class MyClass {};

void operator+(MyClass, auto &&) {
// using std::forward on the second parameter
}

int main() {
const MyClass instance1;
const MyClass instance2;
instance1 + instance2;
}
Sobald ich automatisch durch den tatsächlichen Klassennamen ersetze, funktioniert es nicht mehr zu funktionieren:

Code: Select all

class MyClass {};

void operator+(MyClass, MyClass &&) {
// using std::forward on the second parameter
}

int main() {
const MyClass instance1;
const MyClass instance2;
instance1 + instance2;
}
< /code>
MSVC -Berichte < /p>

Void -Operator +(MyClass, Myclass &&): Argument 2 kann nicht konstant von 'const myclass konstant 'myclass &&' < /p>
Conversion verliert Qualifikationsmerkmale < /p>
< /blockquote>
Und ich bekomme es. Aber warum funktioniert das mit Auto 
? Was macht Auto mit der Constness des zweiten Arguments? Es ist nicht weggegossen, oder?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post