template <typename T>
struct Base {
T value;
Base(T value) : value(value) { }
};
template <typename T>
struct Test : public Base<T> {
typedef Base<T> parent;
T getValue() { return this->value; } // why do I need to use parent:: here?
Test(T value) : parent(value) { }
};
#include <iostream>
int main()
{
Test<int> t(1);
std::cout << t.getValue() <<std::endl;
}
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CnN0cnVjdCBCYXNlIHsKICBUIHZhbHVlOwogIEJhc2UoVCB2YWx1ZSkgOiB2YWx1ZSh2YWx1ZSkgeyB9Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4Kc3RydWN0IFRlc3QgOiBwdWJsaWMgQmFzZTxUPiB7CiAgdHlwZWRlZiBCYXNlPFQ+IHBhcmVudDsKICBUIGdldFZhbHVlKCkgeyByZXR1cm4gdGhpcy0+dmFsdWU7IH0gIC8vIHdoeSBkbyBJIG5lZWQgdG8gdXNlIHBhcmVudDo6IGhlcmU/CiAgVGVzdChUIHZhbHVlKSA6IHBhcmVudCh2YWx1ZSkgeyB9Cn07CgojaW5jbHVkZSA8aW9zdHJlYW0+CmludCBtYWluKCkKewogIFRlc3Q8aW50PiB0KDEpOwogIHN0ZDo6Y291dCA8PCB0LmdldFZhbHVlKCkgPDxzdGQ6OmVuZGw7Cn0=