【发布时间】:2021-09-20 05:27:35
【问题描述】:
下面的代码按预期工作。
struct A
{
template<typename T>
void do_real_stuff() {}
template <typename... Types>
struct DoStuff;
template <typename Head, typename... Tail>
struct DoStuff<Head, Tail...>
{
DoStuff(A &base)
{
base.do_real_stuff<Head>();
(base.do_real_stuff<Tail>(), ...);
}
};
};
struct A 允许我这样称呼它:
A a;
DoStuff<int,double,string>(a);
但我不明白为什么我不能使用相同的模式来处理函数而不是结构。
struct B
{
template<typename T>
void do_real_stuff() {}
template <typename... Types>
void DoStuff();
template <typename Head, typename... Tail>
void DoStuff<Head, Tail...>()
{
do_real_stuff<Head>();
(do_real_stuff<Tail>(), ...);
}
};
因为我想这样称呼它:
A a;
a.DoStuff<int,double,string>();
【问题讨论】:
标签: c++ templates variadic-templates c++20