私は、 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
好奇心旺盛な人は知りたがっています。