#include <iostream>
using namespace std;
extern "C"
class Test1 {
public:
static void foo(int a)
{
cout << "foo called with " << a << endl;
}
};
class Test {
public:
static void foo(int a) noexcept
{
cout << "foo called with " << a << endl;
}
};
extern "C" void bar(void (*fp)(int))
{
fp(42);
}
int main() {
bar(Test1::foo);
bar(Test::foo);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKZXh0ZXJuICJDIgpjbGFzcyBUZXN0MSB7CnB1YmxpYzoKICAgIHN0YXRpYyB2b2lkIGZvbyhpbnQgYSkKICAgIHsKICAgIAljb3V0IDw8ICJmb28gY2FsbGVkIHdpdGggIiA8PCBhIDw8IGVuZGw7CiAgICB9Cn07CgpjbGFzcyBUZXN0IHsKcHVibGljOgogICAgc3RhdGljIHZvaWQgZm9vKGludCBhKSBub2V4Y2VwdAogICAgewogICAgCWNvdXQgPDwgImZvbyBjYWxsZWQgd2l0aCAiIDw8IGEgPDwgZW5kbDsKICAgIH0KfTsKCgpleHRlcm4gIkMiIHZvaWQgYmFyKHZvaWQgKCpmcCkoaW50KSkKewoJZnAoNDIpOwp9CgppbnQgbWFpbigpIHsKCWJhcihUZXN0MTo6Zm9vKTsKCWJhcihUZXN0Ojpmb28pOwoJCglyZXR1cm4gMDsKfQ==