前提・実現したいこと
以下の可変長引数テンプレートメンバ関数Init()のオーバーロードを解決したい。
c++
1#include <vector> 2#include <type_traits> 3 4struct Base {}; 5struct Derived : Base {}; 6 7template<class... T> 8struct A { 9 A() { Init<T...>(); } 10private: 11 template<class Head, class... Body> 12 void Init() { 13 if (std::is_base_of<Base, Head>) return; 14 bases_.emplace_back(new Head); 15 Init<Body...>(); 16 } 17 template<class Head> 18 void Init() { 19 if (std::is_base_of<Base, Head>) return; 20 }; 21 std::vector<Base*> bases_; 22}; 23 24 25int main() { 26 A<Derived> a; 27}
発生している問題・エラーメッセージ
'void A<Derived>::Init<Derived>(void)' の可能性があります または 'void A<Derived>::Init<Derived,>(void)'
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/07 11:52
2020/09/07 12:50