【发布时间】:2017-03-05 05:35:14
【问题描述】:
原因是什么,在以下示例中,具有三个 int 的实例化正在使用第二个函数模板,但不适用于第一个。 附加:对于 State1 / State1 类型,它也不起作用。
struct State1{};
struct State2{};
#if 0
template<typename none = void>
constexpr void f()
{
}
template<typename First, typename... Rest>
constexpr void f()
{
f<Rest...>();
}
#else
template<typename none = void>
constexpr void f()
{
}
template<int First, int... Rest>
constexpr void f()
{
f<Rest...>();
}
#endif
void test()
{
f<1, 2, 3>();
// f<State1, State2>();
}
感谢您的任何提示!
【问题讨论】:
-
“它不工作”不是问题描述。
-
1不是类型,反之亦然。 -
一个模板需要一个类型,你给它一个整数文字。另一个模板需要一个整数,你给它一个类型。你对这不起作用感到惊讶吗?