在C++ 14,它是不可能调用具有多个参数包的函数的模板:C++ Concepts TS会启用多个参数包吗?
#include <future>
template<class... Futures, class... Incrementables>
void foo(Futures&... futures, Incrementables... incrementables)
{
}
int main()
{
std::future<int> a, b;
int x, y;
// ERROR
foo(a, b, x, y);
return 0;
}
因为其中第一参数包端部和第二个开始目前尚不清楚,这是不可能的调用foo
没有附加程序员提供的信息。
然而,看起来这两个参数包原则上可以消除歧义,给出Future
和Incrementable
的正确概念。
即将到来的C++概念技术规范的任何特性是否会放宽这些限制并允许调用具有多个参数包的函数模板?
事实上,即使在C++ 14中,只要可以推导出这些包,也是可能的。 – skypjack