前提・実現したいこと
パラメータパックについての解説は多いのですが,非型テンプレートのパラメータパック展開については,ほとんど見つかりませんでした。以下のモデルを作ってコンパイル時にテンプレート引数のチェックをしようと思っていますが,うまくコードが作れません。
テンプレート引数の正当性のチェックをarg_check関数で行いたいのですが,非型テンプレートパラメータパックの展開の方法がわかりません。
以下のコードでは,arg_check関数を再帰関数として構成すると,おおよそこのような形だろうというところまで書いたものです。
どなたかご教示いただける方よろしくお願いします。(当初のコードをクラスメンバ関数に修正しています。)
発生している問題・エラーメッセージ
Use of undeclared identifier 'arg_check' Expected '(' for function-style cast or type construction
該当のソースコード
C++
1 2constexpr int N=100; 3 4struct Foo{ 5 bool res=false; 6 ///再帰 最後の関数 7 bool constexpr arg_check(){return true;} 8 ///再帰関数 9 template < int head, int... Tail> 10 bool constexpr arg_check (head, int ...tail){///error 11 static_assert(head < N); 12 return arg_check(tail...);///error 13 } 14 15 template<int ... args> 16 auto constexpr func(){ 17 static_assert(arg_check(args));///error 18 res=true; 19 } 20}; 21 22int main(){ 23 Foo f; 24 f.func<200,10>();///200でエラーを検出したい 25}
補足情報(FW/ツールのバージョンなど)
clang
c++17
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。