Decltype per dichiarare il parametro del tipo di ritorno di una funzione (senza auto)

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

  •  25-08-2022
  •  | 
  •  

Domanda

Questa sembra una domanda banale per me, forse non ho trovato la documentazione giusta ..

Ho una struttura A e voglio definire il parametro B in tipo di restituzione del tipo di funzione A:

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

E poi ad un certo punto

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

Potrei farlo: ma è brutto ..

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

(Può essere doppio / int ecc.) Non voglio usare i modelli.

Grazie,

È stato utile?

Soluzione

Non capisco bene la necessità, oltre a giocare con la sintassi. Questo è esattamente cosa auto è stato progettato per e auto è supportato dallo stesso standard aggiunto decltype...

Ad ogni modo, è necessario simulare la chiamata di funzione:

decltype(std::declval<A>()[0]) b = 0;   // equivalent to `int b = 0;`
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top