#include <functional>
struct callback : std::function<void(const callback&)> {
using std::function<void(const callback&)>::function;
};
void test(const callback& cb) {}
int main() {
callback cb = test;
test(cb);
return 0;
}
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+CgpzdHJ1Y3QgY2FsbGJhY2sgOiBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgY2FsbGJhY2smKT4gewogIHVzaW5nCXN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBjYWxsYmFjayYpPjo6ZnVuY3Rpb247Cn07Cgp2b2lkIHRlc3QoY29uc3QgY2FsbGJhY2smIGNiKSB7fQoKaW50IG1haW4oKSB7CgljYWxsYmFjayBjYiA9IHRlc3Q7Cgl0ZXN0KGNiKTsKCXJldHVybiAwOwp9