#include <iostream>
using namespace std;
template<typename T> struct AArgSelector;
template<> struct AArgSelector<int> { typedef void* Type; };
template<> struct AArgSelector<void*> { typedef int Type; };
template<typename T>
class A {
public:
A( typename AArgSelector<T>::Type ) {}
};
int main() {
A<void *> a0( 5 );
//A<int> a1(5);
A<int> a2(&a0);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFBcmdTZWxlY3RvcjsKdGVtcGxhdGU8PiBzdHJ1Y3QgQUFyZ1NlbGVjdG9yPGludD4geyB0eXBlZGVmIHZvaWQqIFR5cGU7IH07CnRlbXBsYXRlPD4gc3RydWN0IEFBcmdTZWxlY3Rvcjx2b2lkKj4geyB0eXBlZGVmIGludCBUeXBlOyB9OwoKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CmNsYXNzIEEgewpwdWJsaWM6CglBKCB0eXBlbmFtZSBBQXJnU2VsZWN0b3I8VD46OlR5cGUgKSB7fQp9OwoKaW50IG1haW4oKSB7CglBPHZvaWQgKj4gYTAoIDUgKTsKCS8vQTxpbnQ+IGExKDUpOwoJQTxpbnQ+IGEyKCZhMCk7CgoJcmV0dXJuIDA7Cn0=