#include <iostream>
template< class N >
class A {
public:
template< class M >
void fun(N n, M m) {
std::cout << "Hello World! " << n << " " << m << std::endl;
}
};
template< class N, class M >
class B {
public:
void fun(N n, M m) {
A< N > a; // Почему если здесь вместо N написать int, то все нормально, а если как есть то ошибка?
a.fun(n, m);
}
};
int main() {
B< int, int > b;
b.fun(1, 2);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGU8IGNsYXNzIE4gPgpjbGFzcyBBIHsgICAgICAgCiAgICBwdWJsaWM6CiAgICAgICAgdGVtcGxhdGU8IGNsYXNzIE0gPgogICAgICAgIHZvaWQgZnVuKE4gbiwgTSBtKSB7CiAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiSGVsbG8gV29ybGQhICIgPDwgbiA8PCAiICIgPDwgbSA8PCBzdGQ6OmVuZGw7CiAgICAgICAgfQp9OwoKdGVtcGxhdGU8IGNsYXNzIE4sIGNsYXNzIE0gPgpjbGFzcyBCIHsKICAgIHB1YmxpYzoKICAgICAgICB2b2lkIGZ1bihOIG4sIE0gbSkgewogICAgICAgIEE8IE4gPiBhOyAgIC8vINCf0L7Rh9C10LzRgyDQtdGB0LvQuCDQt9C00LXRgdGMINCy0LzQtdGB0YLQviBOINC90LDQv9C40YHQsNGC0YwgaW50LCDRgtC+INCy0YHQtSDQvdC+0YDQvNCw0LvRjNC90L4sINCwINC10YHQu9C4INC60LDQuiDQtdGB0YLRjCDRgtC+INC+0YjQuNCx0LrQsD8KICAgICAgICBhLmZ1bihuLCBtKTsKICAgIH0KfTsKCmludCBtYWluKCkgewogICAgQjwgaW50LCBpbnQgPiBiOwogICAgYi5mdW4oMSwgMik7CiAgICByZXR1cm4gMDsKfQo=