4
#include <functional>
struct T {
explicit operator bool() { return true; }
};
int main() {
T t;
if(t) {} // OK
auto l = [&]() {
if (t) {} // Error
};
}
MSVC的行爲在這裏看起來奇怪地不一致; OK行和Error行之間的唯一區別在於它是一個lambda表達式。這是一個錯誤?在lambda中沒有調用顯式運算符bool - MSVC錯誤?
請提供全文的錯誤信息? – 2013-05-09 18:04:54
另外,什麼編譯器版本,平臺和版本? – 2013-05-09 18:05:33
編譯器來自Visual Studio 2012 Express,並進行11月CTP升級,並將其自身標識爲「Microsoft(R)C/C++優化編譯器版本17.00.51025,適用於x86' 並且它給出了'錯誤C2451:類型爲'T'的條件表達式'是非法的 沒有可以執行此轉換的用戶定義轉換運算符,或者不能調用運算符' – rogual 2013-05-10 19:26:18