#include <iostream>
struct TestStructure;
void TestFunction(TestStructure* /*unused*/) {
std::cout << "Free TestFunction\n";
}
struct TestStructure {
int i;
void TestFunction(TestStructure* /*unused*/) {
std::cout << "TestStructure TestFunction\n";
}
void foo() {
std::cout << "From foo\n";
TestFunction(this);
}
};
int main() {
std::cout << "From main:\n";
TestFunction(nullptr);
TestStructure t;
t.foo();
}
ICAgICNpbmNsdWRlIDxpb3N0cmVhbT4KCiAgICBzdHJ1Y3QgVGVzdFN0cnVjdHVyZTsKCiAgICB2b2lkIFRlc3RGdW5jdGlvbihUZXN0U3RydWN0dXJlKiAvKnVudXNlZCovKSB7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJGcmVlIFRlc3RGdW5jdGlvblxuIjsKICAgIH0KCiAgICBzdHJ1Y3QgVGVzdFN0cnVjdHVyZSB7CiAgICAgICAgaW50IGk7CiAgICAgICAgdm9pZCBUZXN0RnVuY3Rpb24oVGVzdFN0cnVjdHVyZSogLyp1bnVzZWQqLykgewogICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3RTdHJ1Y3R1cmUgVGVzdEZ1bmN0aW9uXG4iOwogICAgICAgIH0KICAgICAgICB2b2lkIGZvbygpIHsKICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJGcm9tIGZvb1xuIjsKICAgICAgICAgICAgVGVzdEZ1bmN0aW9uKHRoaXMpOwogICAgICAgIH0KICAgIH07CgogICAgaW50IG1haW4oKSB7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJGcm9tIG1haW46XG4iOwogICAgICAgIFRlc3RGdW5jdGlvbihudWxscHRyKTsKCiAgICAgICAgVGVzdFN0cnVjdHVyZSB0OwogICAgICAgIHQuZm9vKCk7CiAgICB9Cg==