C++ 在类中引用模板参数包

C++ 在类中引用模板参数包,c++,c++17,C++,C++17,从C++17开始,我们得到了可选的模板参数包。但在我的课堂上,我该怎么说呢?有人有好的例子吗?谢谢 模板首先是一点术语。这不是“可选模板参数包”。这是一个具有自动的可变非类型模板参数 有几种方法可以引用它们,但是您需要给变量一个名称。以下是一些例子: #include <tuple> template <class... Args> auto foo(Args...) -> void; template<auto... Args> struct C

从C++17开始,我们得到了可选的模板参数包。但在我的课堂上,我该怎么说呢?有人有好的例子吗?谢谢


模板

首先是一点术语。这不是“可选模板参数包”。这是一个具有自动的可变非类型模板参数

有几种方法可以引用它们,但是您需要给变量一个名称。以下是一些例子:

#include <tuple>

template <class... Args>
auto foo(Args...) -> void;

template<auto... Args>
struct C
{
    static constexpr std::tuple<decltype(Args)...> t{Args...};

    auto call_foo()
    {
        foo(Args...);
    }
};

auto test()
{
    C<'C', 0, 2L, nullptr> x;
    x.call_foo();

    return std::get<2>(x.t);
}
#包括
模板
自动foo(参数…)->作废;
模板
结构C
{
静态constexpr std::tuple t{Args…};
自动调用_foo()
{
foo(Args…);
}
};
自动测试()
{
cx;
x、 调用_foo();
返回std::get(x.t);
}

首先是一点术语。这不是“可选模板参数包”。这是一个具有自动的可变非类型模板参数

有几种方法可以引用它们,但是您需要给变量一个名称。以下是一些例子:

#include <tuple>

template <class... Args>
auto foo(Args...) -> void;

template<auto... Args>
struct C
{
    static constexpr std::tuple<decltype(Args)...> t{Args...};

    auto call_foo()
    {
        foo(Args...);
    }
};

auto test()
{
    C<'C', 0, 2L, nullptr> x;
    x.call_foo();

    return std::get<2>(x.t);
}
#包括
模板
自动foo(参数…)->作废;
模板
结构C
{
静态constexpr std::tuple t{Args…};
自动调用_foo()
{
foo(Args…);
}
};
自动测试()
{
cx;
x、 调用_foo();
返回std::get(x.t);
}
“可选模板参数包”您指的是什么?您在这里所做的是创建一个模板参数包,它由要推导的类型的非类型模板参数组成。但你从来没有给那群人起过名字。那么,您希望如何准确地引用它?“可选模板参数包”您指的是什么?您在这里所做的是创建一个模板参数包,它由要推导的类型的非类型模板参数组成。但你从来没有给那群人起过名字。那么,您希望如何准确地引用它呢?