Cześć :)
template<typename T>
std::ostream& operator<<(std::ostream& os, const typename K<T>::CountedNode& l){
return os;
}
int main() {
K<int>::CountedNode c;
std::cout << c;
return 0;
}
Powyższy kod powoduje błąd:
no match for ‘operator<<’ (operand types are ‘std::ostream {aka std::basic_ostream<char>}’ and ‘K<int>::CountedNode’
Natomiast, jeżeli dodam definicję:
std::ostream& operator<<(std::ostream& os, const typename K<int>::CountedNode& l){
return os;
}
Kod się kompiluje, no więc widać, że jest jakis problem z dedukcją. Dlaczego?