voglio fare qualcosa di simile:argomento di un template non dedotta per la classe interna
#include <iostream>
template<typename T>
class myclass
{
T something;
public:
myclass(T something) : something{ something }
{ }
struct result
{
T value;
};
result get_result()
{
return{ something };
}
};
template<typename T>
std::ostream& operator<<(std::ostream& stream, const typename myclass<T>::result& res)
{
return stream << res.value;
}
int main()
{
myclass<int> m(0);
std::cout << m.get_result() << "\n";
}
In questo caso né gcc né msvc trovare l'operatore flusso di sovraccarico quando ho messo in un risultato (che dipende da un template classe esterna). Quello che sto cercando di fare è anche possibile?
Qual è l'errore messaggio diplay da compilatore? – Garf365
Semplicemente non esiste un modo generale per il compilatore di calcolare un tipo univoco da dedurre. – chris
Il problema pratico è che il tipo annidato potrebbe non essere univoco: 'modello < > classe myclass {using result = myclass :: result'. In questo caso, due istanze condividono un singolo tipo annidato. –
MSalters