#include <iostream>
    template <typename T>
    class Key { friend T; Key() {} Key(Key const&) {} };

    class Foo;

    class Bar { public: void special(int a, Key<Foo>) {} };

    class Foo { public: void special() { Bar().special(1, {}); } };

int main() {
	Foo().special();
	Bar().special(1, {});
	return 0;
}