pet*_*ohn 8 c++ boost boost-variant
Boost Variant文档说明了接受任意类型的构造函数的以下内容:
template<typename T> variant(T & operand);
Run Code Online (Sandbox Code Playgroud)
构造函数接受const T&和的情况也是如此T&&.所以我希望以下代码不会编译:
boost::variant<std::string, bool> v = "text";
Run Code Online (Sandbox Code Playgroud)
但代码编译,并v成为一个布尔,这是我绝对不想要的东西.当然,解决方案是将字符串文字包装在std::string构造函数中.我的问题是:
const char*可转换为两个std::string和bool)?通常,用户定义的转换会丢失标准转换的重载解析过程。
const char有一个从指针到 的内置转换,它优于从到 的bool非内置转换(例如,请参阅隐式转换)。const char *std::string
std::string虽然是标准库的一部分,但不是内置类型,因此仅在转换为内置类型后才考虑其转换构造函数。
一些参考:
| 归档时间: |
|
| 查看次数: |
834 次 |
| 最近记录: |