5
下面的代碼編譯失敗ADL使用std類型無法找到經營者
namespace A {
using C = std::vector<std::string>;
std::ostream& operator << (std::ostream& lhs, const C& rhs) {
lhs << 5;
return lhs;
}
}
int main()
{
A::C f;
std::cout << f;
return 0;
}
與錯誤
Error C2679 binary '<<': no operator found which takes a right-hand operand of type 'A::C' (or there is no acceptable conversion)
顯然它不能找到< <運營商大概是由於考慮到c是一個類來自std命名空間。有什麼方法可以確保編譯器找到這個操作符或者解決這個問題嗎?
以運營商出的命名空間應該工作的。 – interjay
'A :: operator <<(std :: cout,f);'但是我懷疑你在找什麼。 – DeiDei
'A :: C'不是一個類型定義,它只是一個別名。該類型存在於'std'命名空間中。 –