Sto guardando il discorso Modern Template Metaprogramming di Walter E. Brown. Al 54:40 un codice è dato come di seguitorestituisce un valore senza dichiarazione di tipo return in template, si tratta di un refuso?
template<class T, T v>
struct integral_constant{
static constexpr T value = v;
constexpr operator T() const noexcept { return value; } // what does this mean?
constexpr T operator T() const noexcept { return value; }
};
La mia domanda è che cosa significa questa linea constexpr operator T() const noexcept { return value; }
, perché non v'è alcun tipo di ritorno ma è ancora tornando value
? È un errore?
Si tratta di una funzione di conversione. http://en.cppreference.com/w/cpp/language/cast_operator – 0x499602D2
La seconda riga è in realtà 'constexpr T operator()() const noexcept {return value; } ', che è un operatore di chiamata di funzione. –
Sì, hai ragione. Ho trascurato la diapositiva. – Allanqunzi