#include <cstdio>
class tag;
template<class>
struct type { friend constexpr auto get(type); };
template<class TKey, class TValue>
struct set { friend constexpr auto get(TKey) { return TValue{}; } };
struct pituh { auto operator ()(auto value) { std::printf("called %d", value); } };
void foo() { // never called
if constexpr(false) { // never true
if (false) { // never true
constexpr auto call = pituh{};
void(set<type<tag>, decltype(call)>{});
}
}
}
int main() {
get(type<tag>{})(42); // prints called 42
}
I2luY2x1ZGUgPGNzdGRpbz4KCmNsYXNzIHRhZzsKCnRlbXBsYXRlPGNsYXNzPgpzdHJ1Y3QgdHlwZSB7IGZyaWVuZCBjb25zdGV4cHIgYXV0byBnZXQodHlwZSk7IH07Cgp0ZW1wbGF0ZTxjbGFzcyBUS2V5LCBjbGFzcyBUVmFsdWU+CnN0cnVjdCBzZXQgeyBmcmllbmQgY29uc3RleHByIGF1dG8gZ2V0KFRLZXkpIHsgcmV0dXJuIFRWYWx1ZXt9OyB9IH07CgpzdHJ1Y3QgcGl0dWggeyBhdXRvIG9wZXJhdG9yICgpKGF1dG8gdmFsdWUpIHsgc3RkOjpwcmludGYoImNhbGxlZCAlZCIsIHZhbHVlKTsgfSB9OwoKdm9pZCBmb28oKSB7ICAgICAgICAgICAgLy8gbmV2ZXIgY2FsbGVkCiAgaWYgY29uc3RleHByKGZhbHNlKSB7IC8vIG5ldmVyIHRydWUKICAgIGlmIChmYWxzZSkgeyAgICAgICAgLy8gbmV2ZXIgdHJ1ZQogICAgICAgIGNvbnN0ZXhwciBhdXRvIGNhbGwgPSBwaXR1aHt9OwogICAgICAgIHZvaWQoc2V0PHR5cGU8dGFnPiwgZGVjbHR5cGUoY2FsbCk+e30pOwogICAgfQogIH0KfQoKaW50IG1haW4oKSB7CiAgZ2V0KHR5cGU8dGFnPnt9KSg0Mik7IC8vIHByaW50cyBjYWxsZWQgNDIKfQo=