#include <iostream>
using namespace std;

template <const int EVENT>
class Special {
  public:
	virtual ~Special() = default;
	
  protected:
	Special() {
		call();
	}
	virtual void call() = 0;
};

class Test : public Special<0>, public Special<2> {
  private:
	void call() override;
};

template<>
void Test::Special<0>::call() {
	cout << "Call to Special<0>'s call" << endl;
}

template<>
void Test::Special<2>::call() {
	cout << "Call to Special<2>'s call" << endl;
}

int main() {
	Test t;  // Calls constructors
	return 0;
}