6
は、このコードを考えてみましょう:私たちは、コンパイラを見ることができるように多重継承と可変長テンプレート
#include <string>
#include <iostream>
class Foo
{
protected:
void foo(){ std::cout << "foo" << std::endl; }
};
class Bar
{
protected:
void bar(){ std::cout << "bar" << std::endl; }
};
template<typename... Args>
class Test: public Args...
{
public:
void test()
{
this->foo();
this->bar();
}
};
int main(int argc, char** argv)
{
Test<Foo, Bar> test;
test.test();
return 0;
}
は、私たちは、パラメータパックを継承することができます。しかし、この機能が必要な時は?それを正しく使うには?
更新
私はNawazが提供しているようないくつかのユースケースを見てみたいです。 私が見る唯一のユースケース - ポリシーベースのデザインが、我々は必要なポリシーのリストを適用した場合、より良いではないであろうように:
template<typename T, typename Policy1, typename Policy2, typename Policy3>
class SomeClass: public Policy1, public Policy2, public Policy3 { ... };
しかし、あなたは自分自身に答えました: 'Testtest;' – SingerOfTheFall
この機能を使っている[1つの小さな例](https://github.com/snawaz/cson)です。[これはファイルです] (https://github.com/snawaz/cson/blob/master/include/cson/cson.h%2B%2B)をご覧ください。そして、この機能を広範に使用する[より大きな、より複雑な例](https://github.com/snawaz/tagsql)があります。 – Nawaz