【发布时间】:2020-12-10 11:16:50
【问题描述】:
问题
我有一个用于数学运算的自定义向量类型。我可以直接给它一个类型
MyVector<2, int>vec{4,5};
或reference_wrapper
int num1 = 4;
int num2 = 5;
MyVector<2, std::reference_wrapper<int>> vec2{std::ref(num1), std::ref(num2)};
两者都有效。
但是,我想将 MyVector 类限制为仅采用算术类型。考虑在类中放置一个 static_assert,如下所示:
static_assert(std::is_arithmetic_v<T>, "Vector type T must be an arithmetic");
但对于reference_wrapper<int>,这当然会失败。
问题
我如何“解包”一个 std::reference_wrapper 以获取底层类型并在类型特征中使用它?
【问题讨论】:
标签: c++ reference c++14 typetraits