DeclType, um Parameter der Rückgabetyp einer Funktion zu deklarieren (ohne automatisch)

StackOverflow https://stackoverflow.com/questions/20353745

  •  25-08-2022
  •  | 
  •  

Frage

Das sieht für mich nach einer trivialen Frage aus, vielleicht habe ich nicht die richtige Dokumentation gefunden.

Ich habe eine Struktur A und möchte den Parameter B so definieren, dass er von der Art der Funktion A zurückgeht:

struct A{
    int operator[](int);
};

Und dann irgendwann

decltype(A::operator[]) b = 0;

Ich könnte das tun: Aber es ist hässlich ..

A a;
decltype(a[0]) b = 0;

(Es kann doppelt / int usw. sein), ich möchte keine Vorlagen verwenden.

Vielen Dank,

War es hilfreich?

Lösung

Ich verstehe die Notwendigkeit nicht ganz, außer mit der Syntax zu spielen. Genau das, was auto wurde für und entwickelt und für und auto wird durch denselben Standard unterstützt, der hinzugefügt wurde decltype...

Auf jeden Fall müssen Sie den Funktionsaufruf simulieren:

decltype(std::declval<A>()[0]) b = 0;   // equivalent to `int b = 0;`
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top