使用std::out_of_range constructor
代码与旧的编译器字符串自动转换为const char *到的std :: string
对于一些老的编译器,当我在此通过接收“没有实例构造函数”错误迷迷糊糊的std::out_of_range
的定义是
class out_of_range : public logic_error {
public:
out_of_range(const string& message);
};
在最近的版本,他们已经增加了第二个构造
class out_of_range : public logic_error {
public:
out_of_range(const string& message);
out_of_range(const char *message);
};
我是想合作的代码mpile做了以下构造函数调用:
std::out_of_range("Some Error Message");
加入#include <string>
编译器能够const char*
转换为std::string
后?
这是预期的行为?
这与你可以做的原因相同。 'std :: string str =“foobar”;'见例如[这个'std :: string'构造函数参考](http://en.cppreference.com/w/cpp/string/basic_string/basic_string)以获得更多信息(它是列表中标记为'5'的构造函数,您应该看看)。 –