#include <iostream>
using namespace std;
#ifndef TEST_H
#define TEST_H
class User;
template <class T>
class Wrapper {
public:
template<class U>
auto Callback(...) {};
};
template<class T = User>
class Library {
public:
T* node = nullptr;
void utility() {
T::Callback(node);
}
};
class User : public Wrapper<User> {
public:
static void Callback( class Wrapper* ) { std::cout << "Callback was called.\n"; }
};
#endif // TEST_H
int main() {
Library<User> l;
l.utility();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2lmbmRlZiBURVNUX0gKI2RlZmluZSBURVNUX0gKCmNsYXNzIFVzZXI7Cgp0ZW1wbGF0ZSA8Y2xhc3MgVD4KY2xhc3MgV3JhcHBlciB7CnB1YmxpYzoKICAgIHRlbXBsYXRlPGNsYXNzIFU+CiAgICBhdXRvIENhbGxiYWNrKC4uLikge307Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBUID0gVXNlcj4KY2xhc3MgTGlicmFyeSB7CnB1YmxpYzoKICAgIFQqIG5vZGUgPSBudWxscHRyOwogICAgdm9pZCB1dGlsaXR5KCkgewogICAgICAgIFQ6OkNhbGxiYWNrKG5vZGUpOwogICAgfQp9OwoKY2xhc3MgVXNlciA6IHB1YmxpYyBXcmFwcGVyPFVzZXI+IHsKcHVibGljOgogICAgc3RhdGljIHZvaWQgQ2FsbGJhY2soIGNsYXNzIFdyYXBwZXIqICkgeyBzdGQ6OmNvdXQgPDwgIkNhbGxiYWNrIHdhcyBjYWxsZWQuXG4iOyAgfQp9OwoKI2VuZGlmIC8vIFRFU1RfSAoKaW50IG1haW4oKSB7CgogICAgTGlicmFyeTxVc2VyPiBsOwogICAgbC51dGlsaXR5KCk7CgogICAgcmV0dXJuIDA7Cn0=