C++相談室 part145at TECHC++相談室 part145 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト411:デフォルトの名無しさん 19/10/09 04:17:51.46 NmoqHfbB.net あ、こういうふうにするとコンパイルできました。引数2個の関数を特殊化したからエラーになった? テンプレートの展開のされ方がよくわからないけど、とりあえず目的のことはできました ありがとうございました void print(const char* c) { cout << "[" << c << "]" << endl; } template<class T> void print(T t) { cout << t << endl; } template<class First, class... Args> void print(First first, Args... args) { print(first); print(args...); } 412:デフォルトの名無しさん 19/10/09 04:21:52.30 NmoqHfbB.net >>406 いわゆる型特性というやつでしょうか?enable_ifを使うのかと思い試したもののうまくいかず、 ネットで調べるとenable_ifと可変引数テンプレートは相性が悪いという意見を見つけたり... 413:デフォルトの名無しさん 19/10/09 07:02:07.47 8qv563yz.net >>409 if constexprを使った例はこんな感じ template<class First, class... Args> void print(First first, Args... args) { if constexpr(std::is_same_v<First, const char*>){ std::cout << "[" << first << "]" << std::endl; } else { std::cout << first << std::endl; } if constexpr(sizeof...(args)>0){ print(args...); } } 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch