我猜std :: variant_alternative_t可能会有所帮助,但是文档不完整(没有示例:https://en.cppreference.com/w/cpp/utility/variant/variant_alternative)。
让我们假设以下示例。
std::variant<int, float> testVariant{ 12.2f };
std::cout << std::get<1>(testVariant); // Everything is cool
//std::cout << std::get<testVariant.index()>(testVariant) // Unfortunately, incorrect syntax
//... why ever, i dont see any difference to the line above
//std::variant_alternative_t<???>(???) i dont have any cloud how to use it
答案 0 :(得分:3)
正确的用法包括两个模板参数:索引和要索引到的变体类型。
const model = require('./model/Amministratore.js')
或者,如果您既不想拼写完整的变体,也不给它提供类型别名(using MyIndexedType = std::variant_alternative_t<1, std::variant<int, float>>;
),请使用using MyVariant = std::variant<int, float>
:
decltype
请注意,尽管必须在编译时知道索引。您不必在编译时就了解所有静态类型。
答案 1 :(得分:3)
您需要访问变体,该变体将为您生成所有分支:
std::visit([&](auto const &value) {
std::cout << "Index " << testVariant.index() << ", ";
std::cout << "type " << typeid(decltype(value)).name() << ", ";
std::cout << "value " << value << '\n';
}, testVariant);