按索引访问变体元素:文档告诉我什么?

时间:2019-05-30 12:53:50

标签: c++ union variant code-documentation

以下代码在我的计算机上运行良好:

#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;
}

我创建了一个包含variantdouble的{​​{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)元素来检查变量是否具有特定类型吗?

第二,有没有办法在循环中检查变量的类型成员?

0 个答案:

没有答案