dgr*_*rat 7 c++ ifstream language-lawyer
我有一个拼写错误(||
而不是|
)并注意到这样的代码失败了GCC并用Visual编译.我知道第二个参数std::ifstream
是int
.所以理论上,a bool
必须被隐含地转换为a int
.那么为什么失败呢?
导致错误的示例(我只使用了一些int而不是标志).
#include <fstream>
int main(int argc, char * argv[]) {
std::ifstream("foo", 2 | 3 || 4)
}
Run Code Online (Sandbox Code Playgroud)
std::ifstream
的构造函数作为第二个参数std::ios_base::openmode
,typedef
来自实现定义的类型:
typedef /*implementation defined*/ openmode;
Run Code Online (Sandbox Code Playgroud)
似乎Visual使用整数,GCC没有,这就是你的代码在GCC上失败的原因.
归档时间: |
|
查看次数: |
125 次 |
最近记录: |