はちょうどこの無効である理由を不思議:なぜこの可変的なテンプレートはエラーですか?
#include <iostream>
template <std::size_t... Is>
void foo(Is&&... args) {
std::cout << "foo called with " << sizeof...(Is) << "params\n";
}
int main() {
foo(1, 2, 3, 4);
}
は、それは完全に合理的な例だ、まだ私は私の手を得ることができる任意のコンパイラでfails。
class
の代わりにsize_t
を使用すると、この例は正常に動作します。私も新しいauto
テンプレートパラメータを使用しようとしましたが、オンラインコンパイラはこれを受け入れないので、これが無効なユースケースか適合問題かどうかわかりません。
は 'Is'がタイプではない専用の概念を定義します。 'size_t'の値です。 – NathanOliver
あなたは 'void foo(1 a、2 b、3 c、...)'を書かないので、なぜ 'void foo(Is ...)'と書いていますか? ;)標的用量をだます – Holt
@BaummitAugenはなぜ@NathanOliver – NathanOliver