#include <iostream>
using namespace std;
namespace Detail
{
template<typename T>
struct Tag
{
using type = T;
};
template<typename S, typename T, T p>
struct Hold
{
typename S::type m_a = p;
static Hold instance;
};
template<typename S, typename T, T p>
Hold<S, T, p> Hold<S, T, p>::instance;
}
class A
{
private:
void func()
{
}
};
using mtype = void (A::*)();
template struct Detail::Hold<Detail::Tag<mtype>, mtype, &A::func>;
int main() {
// your code goes here
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKbmFtZXNwYWNlIERldGFpbAp7Cgl0ZW1wbGF0ZTx0eXBlbmFtZSBUPgoJc3RydWN0IFRhZwoJewoJCXVzaW5nIHR5cGUgPSBUOwoJfTsKCgl0ZW1wbGF0ZTx0eXBlbmFtZSBTLCB0eXBlbmFtZSBULCBUIHA+CglzdHJ1Y3QgSG9sZAoJewoJCXR5cGVuYW1lIFM6OnR5cGUgbV9hID0gcDsJCgkJc3RhdGljIEhvbGQgaW5zdGFuY2U7Cgl9OwoKCXRlbXBsYXRlPHR5cGVuYW1lIFMsIHR5cGVuYW1lIFQsIFQgcD4KCUhvbGQ8UywgVCwgcD4gSG9sZDxTLCBULCBwPjo6aW5zdGFuY2U7Cgp9CgoKY2xhc3MgQQp7CnByaXZhdGU6Cgl2b2lkIGZ1bmMoKQoJewoJfQp9OwoKdXNpbmcgbXR5cGUgPSB2b2lkIChBOjoqKSgpOwp0ZW1wbGF0ZSBzdHJ1Y3QgRGV0YWlsOjpIb2xkPERldGFpbDo6VGFnPG10eXBlPiwgbXR5cGUsICZBOjpmdW5jPjsKCmludCBtYWluKCkgewoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJcmV0dXJuIDA7Cn0=