【发布时间】:2014-08-21 01:24:13
【问题描述】:
我正在尝试创建一个名为 Choose 的函数,它可以将以下内容作为参数:
template<typename... Args>
class Option
{
Option(Args... arguments)
{
// irrelevant
}
// ...
}
void Foo()
{
Choose(
Option<int, int>(3, 5),
Option<int>(7,123),
Option<int, int, int, int>(1, 2, 3, 4)
);
}
所以我有一个可变参数类型的类,我想创建一个函数,该函数接受该类的任意数量的实例,其中每个实例的类型都可以有 different 参数。
我能够创建这样一个函数,其中所有实例的类型都需要具有相同的参数:
template <template <typename... Args> class... Opt, typename... Args>
void Choose(EnemyAIState& state, Opt<Args...>... option)
{
// irrelevant
}
void Foo()
{
Choose(state,
Option<int>(1),
Option<int>(2),
Option<int>(3)
);
}
但是,我无法实现我的最终目标,因为我找不到合适的 syntax 来使用。我希望你能在正确的方向上帮助我。
【问题讨论】:
-
你总是可以把它们当作简单的
template<typename...Opt> void Choose(EnemyAIState& state, Opt... option)。 -
哦哇哈哈,新鲜的想法总是更好。现在它可以工作了,我仍然对这是否可能感兴趣。
-
我的意思是我开始的方式。
-
我认为这不可能。如果您想要更好的错误消息,请使用
static_assert。 -
@AartStuurman:答案不包含在问题中。如果您的“答案”与 T.C. 的答案不同,请将其作为新答案发布在此页面上。