首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么没有可变元组模板参数的基本大小写不能工作?

为什么没有可变元组模板参数的基本大小写不能工作?
EN

Stack Overflow用户
提问于 2022-08-25 15:03:54
回答 1查看 88关注 0票数 -1

作为练习,我试图为一个元组定义一个可变模板,但我发现没有元素的基本情况不起作用。

代码语言:javascript
复制
template <typename Head, typename... Tail>
struct Tuple : Tuple<Tail...>
{
  Tuple(const Head& head, const Tail&... tail)
    : Base{tail...}, m_head{head} {}

private:
  using Base = Tuple<Tail...>;
  Head m_head;
};

template <> struct Tuple<> {};

MSVC 2022提供了以下错误:

代码语言:javascript
复制
C:\projects\cpp\cpp_programming_language\28_metaprogramming\variadic_tuple.cpp(12): error C2976: 'Tuple': too few template arguments
  C:\projects\cpp\cpp_programming_language\28_metaprogramming\variadic_tuple.cpp(2): note: see declaration of 'Tuple'
C:\projects\cpp\cpp_programming_language\28_metaprogramming\variadic_tuple.cpp(12): error C2913: explicit specialization; 'Tuple' is not a specialization of a class template

为什么这不起作用,以及如何解决它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-25 15:15:34

一个正确的咒语是

代码语言:javascript
复制
template <typename...> struct Tuple;

template <> struct Tuple<> {};

template <typename Head, typename... Tail>
struct Tuple<Head, Tail...> : Tuple<Tail...>
{

(其余内容与您的代码相同)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73489837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档