#include <iostream>
namespace N {
class C {};
template<typename X>
char const * found(X && x) {
return "found";
}
template<typename, typename X>
char const * notfound(X && x) {
return "not found";
}
}
int main() {
N::C object;
std::cout
<< found(object) << std::endl
<< notfound<bool>(object) << std::endl
<< notfound<bool, N::C>(object) << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKbmFtZXNwYWNlIE4gewoJY2xhc3MgQyB7fTsKCQoJdGVtcGxhdGU8dHlwZW5hbWUgWD4KCWNoYXIgY29uc3QgKiBmb3VuZChYICYmIHgpIHsKCQlyZXR1cm4gImZvdW5kIjsKCX0KCQoJdGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lIFg+CgljaGFyIGNvbnN0ICogbm90Zm91bmQoWCAmJiB4KSB7CgkJcmV0dXJuICJub3QgZm91bmQiOwoJfQp9CgppbnQgbWFpbigpIHsKCU46OkMgb2JqZWN0OwoJc3RkOjpjb3V0CgkJPDwgZm91bmQob2JqZWN0KSA8PCBzdGQ6OmVuZGwKCQk8PCBub3Rmb3VuZDxib29sPihvYmplY3QpIDw8IHN0ZDo6ZW5kbAoJCTw8IG5vdGZvdW5kPGJvb2wsIE46OkM+KG9iamVjdCkgPDwgc3RkOjplbmRsOwp9
prog.cpp: In function ‘int main()’:
prog.cpp:21:6: error: ‘notfound’ was not declared in this scope
<< notfound<bool>(object) << std::endl
^~~~~~~~
prog.cpp:21:6: note: suggested alternative:
prog.cpp:12:15: note: ‘N::notfound’
char const * notfound(X && x) {
^~~~~~~~
prog.cpp:21:15: error: expected primary-expression before ‘bool’
<< notfound<bool>(object) << std::endl
^~~~