ポリシークラスを使ってみる

Modern C++ Design難しいなぁ…。

#include <iostream>

using namespace std;

template <class T>
class Foo {
public:
  void func() {
    cout << sizeof(T) << endl;
  }
};

template <class T>
class Bar {
public:
  void func() {
    cout << typeid(T).name() << endl;
  }
};

class Zoo {
};

template <template <class> class Policy>
class Host : public Policy<Zoo> {
public:
  void call_func() {
    func();
  }
};

int main() {
  Host<Foo> foo;
  Host<Bar> bar;
  foo.call_func();
  bar.call_func();
}