为什么我不能写下面的代码?
#include <fstream> #include <string> bool touch(const std::string& file_path) { return std::ofstream(file_path,std::ios_base::app); } int main() { touch("foo.txt"); }
产量
prog.cpp: In function 'bool touch(const string&)': prog.cpp:6:52: error: cannot convert 'std::ofstream {aka std::basic_ofstream<char>}' to 'bool' in return return std::ofstream(file_path,std::ios_base::app);
我知道std :: fstream的运算符bool()定义为显式但我没有看到任何理由为什么它会在这种情况下失败.没有中间转换,只有临时的std :: ofstream对象和bool.什么原因?