我得到了std::variant
几种类型的一个。我想编写一个特征,为另一个特征提供std::variant
第一种类型的指针。
using MyVariant = std::variant<int, float>;
using MyVariantOfPointers = pointer_of_v<MyVariant>;
MyVariantOfPointer
就是这样std::variant<int*, float*>
。我尝试使用std::variant_size_v
和,std::variant_alternative_t
但我不知道如何递归构建新类型。
您可以使用部分专门化来编写特征来解决这个问题。
用法 :
完整示例(https://godbolt.org/z/qaTxo4nzc):
提供通用解决方案的另一种解决方案:将任何类型的函子应用于任何类型的集合:
使用示例:
Compiler Explorer 上的演示