template <typename T, T V>
struct rob
{
rob()
{
value = V;
}
static T value;
};
template<typename T, T V>
T rob<T, V>::value;
struct A
{
private:
void f()
{
std::cout << "proof!" << std::endl;
}
};
template class rob<void(A::*)(), &A::f>;
int main()
{
A a;
rob<void(A::*)(), &A::f>();
(a.*rob<void(A::*)(), &A::f>::value)();
}