#include <iostream>
#include <string>
using namespace std;
namespace ns1
{
void printVal( int val)
{
cout<<"int: "<<val<<"\n";
}
void printVal( unsigned val)
{
cout<<"unsigned: "<<val<<"\n";
}
void printVal( const char* s )
{
cout<<"const char*: "<<s<<"\n";
}
void printVal( std::string s )
{
cout<<"std::string: "<<s<<"\n";
}
template< typename T >
void printTpl( const T &t)
{
cout<<"Tpl: "<<t<<"\n";
}
template<>
void printTpl<unsigned>( const unsigned &t)
{
cout<<"Tpl<unsigned>: "<<t<<"\n";
}
} // namespace ns1
namespace ns2
{
using ns1::printVal;
using ns1::printTpl;
}
int main() {
int i = 8;
unsigned u = 10;
std::string s = "sss";
const char * str = "str";
ns2::printVal(i);
ns2::printVal(u);
ns2::printVal(s);
ns2::printVal(str);
cout<<"---\n";
ns2::printTpl(i);
ns2::printTpl(u);
ns2::printTpl(s);
ns2::printTpl(str);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKCm5hbWVzcGFjZSBuczEKewoJCgl2b2lkIHByaW50VmFsKCBpbnQgdmFsKQoJewoJCWNvdXQ8PCJpbnQ6ICI8PHZhbDw8IlxuIjsKCX0KCQoJdm9pZCBwcmludFZhbCggdW5zaWduZWQgdmFsKQoJewoJCWNvdXQ8PCJ1bnNpZ25lZDogIjw8dmFsPDwiXG4iOwoJfQoJCgl2b2lkIHByaW50VmFsKCBjb25zdCBjaGFyKiBzICkKCXsKCQljb3V0PDwiY29uc3QgY2hhcio6ICI8PHM8PCJcbiI7Cgl9CgkKCXZvaWQgcHJpbnRWYWwoIHN0ZDo6c3RyaW5nIHMgKQoJewoJCWNvdXQ8PCJzdGQ6OnN0cmluZzogIjw8czw8IlxuIjsKCX0KCQoJdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgoJdm9pZCBwcmludFRwbCggY29uc3QgVCAmdCkKCXsKCQljb3V0PDwiVHBsOiAiPDx0PDwiXG4iOwoJfQoJCgl0ZW1wbGF0ZTw+Cgl2b2lkIHByaW50VHBsPHVuc2lnbmVkPiggY29uc3QgdW5zaWduZWQgJnQpCgl7CgkJY291dDw8IlRwbDx1bnNpZ25lZD46ICI8PHQ8PCJcbiI7Cgl9CgkKfSAvLyBuYW1lc3BhY2UgbnMxCgpuYW1lc3BhY2UgbnMyCnsKCXVzaW5nIG5zMTo6cHJpbnRWYWw7Cgl1c2luZyBuczE6OnByaW50VHBsOwoKfQoKCmludCBtYWluKCkgewoJCglpbnQgICAgICAgICAgaSA9IDg7Cgl1bnNpZ25lZCAgICAgdSA9IDEwOwoJc3RkOjpzdHJpbmcgIHMgPSAic3NzIjsKCWNvbnN0IGNoYXIgKiBzdHIgPSAic3RyIjsKCQoJbnMyOjpwcmludFZhbChpKTsKCW5zMjo6cHJpbnRWYWwodSk7CgluczI6OnByaW50VmFsKHMpOwoJbnMyOjpwcmludFZhbChzdHIpOwoJY291dDw8Ii0tLVxuIjsKCW5zMjo6cHJpbnRUcGwoaSk7CgluczI6OnByaW50VHBsKHUpOwoJbnMyOjpwcmludFRwbChzKTsKCW5zMjo6cHJpbnRUcGwoc3RyKTsKfQ==