我在Going Native 2013中观看了 Bjarne Strustrup 的演讲,他为即将推出的 C++ 概念精简版功能提供了以下示例。
void sort(Container& c); // terse notation
// Expands to
template <Container __Cont>
void sort(__Cont& c); // shorthand notation
// Expands to
template <typename __Cont>
requires Container<__Cont>()
void sort(__Cont & c);
我的问题是这将如何与可变参数模板一起使用?
假设我想maximum
使用一个Comparable
概念定义一个可变参数函数。会接受以下语法吗?
auto maximum(Comparable a)
{
return a;
}
auto maximum(Comparable c, Comparable... rest)
{
return std::max(a, maximum(rest...));
}
如果是这样,则Comparable...
意味着参数包中的所有元素都是相同的类型,或者只是它们都是Comparable
类型,因此包可能同时包含int
和string
?(两者都可以比较,但不能相互比较)
好奇的人想知道。