前提・実現したいこと
スカラーとクラスで構成される関数の可変引数が,数と順序が任意に並んでいる場合,そのうち,スカラーの数だけをカウントするコードを考えています。以下のコードを考えているのですが,うまくいきません。コンパイル時に決定するのが前提になります。
どなたか,お分かりになる方のご教示をいただけませんか。
発生している問題・エラーメッセージ
#1:No matching function for call to 'scalar_count' #2:Constexpr variable 'expect2' must be initialized by a constant expression
該当のソースコード
C++
1using namespace std; 2template< typename TT, typename ...Args> 3constexpr size_t scalar_count(const TT s,const Args...args){ 4 if constexpr(is_scalar_v<TT>) 5 return 1+scalar_count(args...);//error #1 6 else 7 return 0+scalar_count(args...);; 8} 9 10template<typename TT> 11constexpr size_t scalar_count(const TT){ 12 return 0; 13} 14 15int main (){ 16 class cls{} c; 17 constexpr size_t expect2 = scalar_count(1,c,2);//error#2 18}
補足情報(FW/ツールのバージョンなど)
clang
C++17
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/12 17:03
2021/02/12 17:04
2021/02/12 17:13
2021/02/12 20:52 編集
2021/02/13 02:38
2021/02/13 02:40
2021/02/13 12:15