#include <iostream>
#include <vector>
#include <stdexcept>
template <typename T>
void f(const T &) { std::cout << "NO" << std::endl; }
template <typename T, int SFINAE = sizeof(static_cast<std::ostream &(std::ostream::*)(T)>(
&std::ostream::operator<<))>
void f(const T &) { std::cout << "YES" << std::endl; }
int main() {
typedef const char *(std::exception::*F0)() const;
F0 f0 = &std::exception::what;
f(0);
f("abc");
f(static_cast<const char *>("abc"));
f(0.);
f(f0);
f(std::vector<int>());
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RkZXhjZXB0PgoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CnZvaWQgZihjb25zdCBUICYpIHsgc3RkOjpjb3V0IDw8ICJOTyIgPDwgc3RkOjplbmRsOyB9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgaW50IFNGSU5BRSA9IHNpemVvZihzdGF0aWNfY2FzdDxzdGQ6Om9zdHJlYW0gJihzdGQ6Om9zdHJlYW06OiopKFQpPigKCSZzdGQ6Om9zdHJlYW06Om9wZXJhdG9yPDwpKT4Kdm9pZCBmKGNvbnN0IFQgJikgeyBzdGQ6OmNvdXQgPDwgIllFUyIgPDwgc3RkOjplbmRsOyB9CgppbnQgbWFpbigpIHsKCXR5cGVkZWYgY29uc3QgY2hhciAqKHN0ZDo6ZXhjZXB0aW9uOjoqRjApKCkgY29uc3Q7CiAJRjAgZjAgPSAmc3RkOjpleGNlcHRpb246OndoYXQ7CgoJZigwKTsKCWYoImFiYyIpOwoJZihzdGF0aWNfY2FzdDxjb25zdCBjaGFyICo+KCJhYmMiKSk7CglmKDAuKTsKCWYoZjApOwoJZihzdGQ6OnZlY3RvcjxpbnQ+KCkpOwoKCXJldHVybiAwOwp9