#include <iostream>
#include <string>
struct S {
template<typename T>
S(const T& t)
{ std::cout << "T t\n"; }
std::string value_;
};
template<>
S::S(const std::string&) {
std::cout << "const string&\n";
}
int main() {
S s1(42);
std::string foo{"bar"};
const std::string& foor = foo;
S s2(foo);
S s3(foor);
}
CSNpbmNsdWRlIDxpb3N0cmVhbT4KCSNpbmNsdWRlIDxzdHJpbmc+CgkKCXN0cnVjdCBTIHsKCQl0ZW1wbGF0ZTx0eXBlbmFtZSBUPgoJCVMoY29uc3QgVCYgdCkgCgkJeyBzdGQ6OmNvdXQgPDwgIlQgdFxuIjsgfQoJCQoJCXN0ZDo6c3RyaW5nIHZhbHVlXzsKCX07CgoJCgl0ZW1wbGF0ZTw+CglTOjpTKGNvbnN0IHN0ZDo6c3RyaW5nJikgewoJCXN0ZDo6Y291dCA8PCAiY29uc3Qgc3RyaW5nJlxuIjsKCX0KCQoJaW50IG1haW4oKSB7CgkJUyBzMSg0Mik7CgkKCQlzdGQ6OnN0cmluZyBmb297ImJhciJ9OwoJCWNvbnN0IHN0ZDo6c3RyaW5nJiBmb29yID0gZm9vOwoJICAgIFMgczIoZm9vKTsKCSAgICBTIHMzKGZvb3IpOwoJfQ==