#include <iostream>
#include <boost/strong_typedef.hpp>
BOOST_STRONG_TYPEDEF(int, foo);
template <typename T>
void bar(T param)
{
std::cout << "Inside unspecialized function template." << std::endl;
}
template <>
void bar(foo param)
{
std::cout << "Inside specialization." << std::endl;
}
int main()
{
bar(123);
foo param(123);
bar(param);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Ym9vc3Qvc3Ryb25nX3R5cGVkZWYuaHBwPgoKQk9PU1RfU1RST05HX1RZUEVERUYoaW50LCBmb28pOwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CnZvaWQgYmFyKFQgcGFyYW0pCnsKCXN0ZDo6Y291dCA8PCAiSW5zaWRlIHVuc3BlY2lhbGl6ZWQgZnVuY3Rpb24gdGVtcGxhdGUuIiA8PCBzdGQ6OmVuZGw7Cn0KCnRlbXBsYXRlIDw+CnZvaWQgYmFyKGZvbyBwYXJhbSkKewoJc3RkOjpjb3V0IDw8ICJJbnNpZGUgc3BlY2lhbGl6YXRpb24uIiA8PCBzdGQ6OmVuZGw7Cn0KCmludCBtYWluKCkKewoJYmFyKDEyMyk7Cglmb28gcGFyYW0oMTIzKTsKCWJhcihwYXJhbSk7CglyZXR1cm4gMDsKfQ==