【发布时间】:2021-05-23 12:00:13
【问题描述】:
我正在尝试创建一个任意数量的 int 参数的模板向量并创建一个函数来打印这些参数:
namespace ex {
template <int I, class... Ts>
constexpr decltype(auto) get(Ts&& ... ts) {
return std::get<I>(std::forward_as_tuple(ts...));
}
template<int... N>
struct vec
{
static const int size = sizeof...(N);
void print() {
print(size-1);
}
void print(const int n) {
if (n >= 0) {
print(n - 1);
std::cout << ex::get<n>(N...) << std::endl;
}
}
};
}
int main()
{
ex::vec<1, 2, 3> v;
v.print();
}
我收到以下错误:
error C2672: 'ex::get': no matching overloaded function found
error C2975: 'I': invalid template argument for 'ex::get', expected compile-time constant expression
谁能解释我错过了什么以及如何实现我期望的行为?
提前致谢。
【问题讨论】:
标签: c++ templates metaprogramming