Dan*_*ila 4 c++ metaprogramming c++17
我有以下类型
using MyTuple=std::tuple<std::vector<char>,std::vector<double>,std::vector<int>>;
Run Code Online (Sandbox Code Playgroud)
如何编写将 MyTuple 转换为以下类型的元函数?
std::variant<std::monostate,char,double,int>
Run Code Online (Sandbox Code Playgroud)
#include <vector>
#include <tuple>
#include <variant>
template <typename Tuple>
struct get_variant;
template <typename... Ts>
struct get_variant<std::tuple<Ts...>>
{
using type = std::variant<std::monostate, typename Ts::value_type ...>;
};
using MyTuple = std::tuple<std::vector<char>,std::vector<double>,std::vector<int>>;
using MyVariant = typename get_variant<MyTuple>::type;
using Expected = std::variant<std::monostate,char,double,int>;
static_assert(std::is_same_v<Expected, MyVariant>);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1621 次 |
| 最近记录: |