以下代码在我的计算机上运行良好:
#include <string>
#include <variant>
#include <iostream>
int main() {
std::variant<double, std::string> var;
var = 20;
if (std::get_if<0>(&var))
std::cout << "a double\n";
else if (std::get_if<1>(&var))
std::cout << "a string\n";
return 0;
}
我创建了一个包含variant
或double
的{{1}},然后使用std::get_if通过一个索引检查该变体是否包含任一类型的元素。相反,以下代码无法编译:
string
我仍在尝试学习#include <string>
#include <variant>
#include <iostream>
int main() {
std::variant<double, std::string> var;
var = 20;
for (size_t i = 0; i < 2; ++i) {
if (std::get_if<i>(&var))
std::cout << i;
}
return 0;
}
,而文档有时对我还是很难以理解。
有人能解释一下我链接的文档如何告知我不能使用c++
(或size_t
)元素来检查变量是否具有特定类型吗?
第二,有没有办法在循环中检查变量的类型成员?