std :: variant反射。如何判断分配了哪种类型的std :: variant?

时间:2018-02-25 21:24:33

标签: c++ reflection std variant type-erasure

我有一个名为<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="demo"> <div class="wrapper"> <img class="first" src="https://upload.wikimedia.org/wikipedia/commons/3/39/Westminstpalace.jpg"> <img src="https://www.nasa.gov/sites/default/files/styles/image_card_4x3_ratio/public/thumbnails/image/mcmurdoiceberg_pho_2017333_lrg.jpg"> <img class="scroll" src="https://www.nasa.gov/sites/default/files/styles/image_card_4x3_ratio/public/thumbnails/image/pia21975-opt.jpg"> <img src="https://www.nasa.gov/sites/default/files/styles/image_card_4x3_ratio/public/thumbnails/image/36782365195_b7fcd1480c_o.jpg"> <img src="https://www.nasa.gov/sites/default/files/styles/image_card_4x3_ratio/public/thumbnails/image/assasn-14li_banner_0.jpg"> </div> </div> <button> Scroll to </button>的班级,其成员名为foo_t,可以是barstd::stringint等类别中的任何一种我希望能够std::vector<double>询问已分配了哪种类型foo_t。我决定使用bar

我已经写了一个解决方案,但我不确定这是否是一个很好用的std :: variant。我不确定它是否重要,但我希望未来类型列表可能会变得更大。我创建了一个枚举类来存储分配了std :: variant的类型。我的第一个实现也可以在wandbox上找到:

std::variant

这是一个很好的方法吗?有没有办法有更好的表现?有没有一种方法需要更少的代码来编写?有没有一种方法不需要C ++ 17?

1 个答案:

答案 0 :(得分:2)

使用std::variant::index在运行时检查存储的类型。