#include <iostream>
using namespace std;

template<typename T>
class A {
public:
	// void test() {
	// 	cout << "A::test" << endl;
	// }
	
	void callTest() {
		static_cast<T *>(this)->test();
	}
};

class B : public A<B> {
public:
	void test() {
		cout << "B::test" << endl;
	}
};

int main() {
	B b;
	b.callTest();

	return 0;
}