带有字符串的boost :: variant和bool在构造中没有正确匹配字符串

时间:2018-01-19 01:22:14

标签: c++ boost variant

在下面的例子中:

boost::variant<double, std::string, bool> testString("this string");
std::string s1 = boost::get<std::string>(testString);

我们将失败并出现运行时异常:

  

运行时检查失败#0 - ESP的值未在函数调用中正确保存。这通常是调用使用一个调用约定声明的函数的结果,函数指针使用不同的调用约定声明。

经过调查后,变体的which值:

std::cout << testString.which() << "\n";

它是2的值,因此在施工期间它与bool明显匹配。这可以通过以下方式得到进一步证实:

boost::variant<double, std::string> testString("this string"); // bool is removed

为什么提升变体与"this string"构造中的bool匹配而不是字符串?

0 个答案:

没有答案