可変個引数テンプレートクラスのタイプごとに関数のオーバーロードが必要です。それは可能ですか?
template<typename ...args>
class Example {
virtual void doSomething(args(0) arg) { ... }
virtual void doSomething(args(1) arg) { ... }
/// etc... implementations are the same, but I need access to the type
}
折り畳み式を使ってみましたが、うまくいっていないと思います。関数を仮想にする必要があるためtemplate<typename T> virtual void doSomething(T arg)
、テンプレート仮想関数が許可されていないため、宣言できません。
クラスは、関数パラメータータイプとして単一のテンプレートパラメーターを使用して1つの仮想関数を定義する基本クラステンプレートのインスタンス化のテンプレート化されたパックから派生できます。派生クラスは、すべて仮想である各テンプレート引数タイプの関数オーバーロードを保持します。
template<typename arg>
class Base {
virtual void doSomething(arg arg) {}
};
template<typename ...args>
class Example : public Base<args>... {};
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加