假设我们需要编写一个这样的模板函数。
deep<func, 2>(1); // func(func(1))
template<auto foo, size_t depth, typename... Args>
auto deep(Args&&... args)
{
...
auto result = deep<foo, depth - 1>(std::forward<Args>(args)...);
...
return result;
}
这里出现了另一个具有部分特化的深度模板函数,它会简单地调用原始函数。就像是
template<auto foo, size_t depth = 0, typename... Args>
auto deep(Args... args)
{
return foo(std::forward<Args>(args)...);
}
但是在 c++ 中没有模板函数的部分特化。有没有办法在不使用类的情况下解决这个问题?