除了将happyNumber设置为1337之外,这个转换还有什么效果(如果有的话),如果没有其他效果,那我怎么能编写像这样的代码?这是编译器bug还是C++的“隐藏特性”?
int happyNumber = static_cast<int>(123.456, TRUE, "WTF" , false , "IS" , NULL , "GOING" , 0xff , "ON???" , 1337);
我很惊讶这段代码居然能编译通过。我是在一个错误中发现它的,当时我不小心把第二个参数设置成了应该用于函数调用的表达式。由此导致了一个令人头痛的bug,对象从第二个参数处被转换并只传入了一个参数。它竟然还能编译通过……一开始也没有出错。
我正在使用Microsoft Visual C++ 2008。