Я смотрел Bjarne Strustrup в Going Native 2013, и он приводит следующий пример для предстоящей концепции-Lite-функции С++.
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
? (которые оба сопоставимы, но не друг с другом)
Любопытные умы хотят знать.