#include <iostream>
#include <set>
#include <string>
#include <vector>
using namespace std;
template<typename T>
void check_emplace_back(T& t, ...) {
cout << "T does not have emplace_back()" << endl;
}
template<typename T>
auto check_emplace_back(T& t, int)
-> decltype((void)t.emplace_back()) {
cout << "T does have emplace_back()!" << endl;
t.emplace_back();
}
int main() {
double d{};
check_emplace_back(d, 0);
set<string> ss{};
check_emplace_back(ss, 0);
vector<int> vi{};
check_emplace_back(vi, 0);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4Kdm9pZCBjaGVja19lbXBsYWNlX2JhY2soVCYgdCwgLi4uKSB7Cgljb3V0IDw8ICJUIGRvZXMgbm90IGhhdmUgZW1wbGFjZV9iYWNrKCkiIDw8IGVuZGw7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CmF1dG8gY2hlY2tfZW1wbGFjZV9iYWNrKFQmIHQsIGludCkKCQktPiBkZWNsdHlwZSgodm9pZCl0LmVtcGxhY2VfYmFjaygpKSB7Cgljb3V0IDw8ICJUIGRvZXMgaGF2ZSBlbXBsYWNlX2JhY2soKSEiIDw8IGVuZGw7Cgl0LmVtcGxhY2VfYmFjaygpOwp9CgoKaW50IG1haW4oKSB7Cglkb3VibGUgZHt9OwoJY2hlY2tfZW1wbGFjZV9iYWNrKGQsIDApOwoJCglzZXQ8c3RyaW5nPiBzc3t9OwoJY2hlY2tfZW1wbGFjZV9iYWNrKHNzLCAwKTsKCgl2ZWN0b3I8aW50PiB2aXt9OwoJY2hlY2tfZW1wbGFjZV9iYWNrKHZpLCAwKTsKCglyZXR1cm4gMDsKfQ==