#include <iostream>
using namespace std;
template<typename T> void foo(T v);
template<> void foo<int>(int v)
{
std::cout << "non const version:" << v << std::endl;
}
template<> void foo<const int>(int v)
{
std::cout << "const version:" << v << std::endl;
}
int main() {
foo<int>(1);
foo<const int>(1);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBmb28oVCB2KTsKCnRlbXBsYXRlPD4gdm9pZCBmb288aW50PihpbnQgdikKewoJc3RkOjpjb3V0IDw8ICJub24gY29uc3QgdmVyc2lvbjoiIDw8IHYgPDwgc3RkOjplbmRsOwp9CnRlbXBsYXRlPD4gdm9pZCBmb288Y29uc3QgaW50PihpbnQgdikKewoJc3RkOjpjb3V0IDw8ICJjb25zdCB2ZXJzaW9uOiIgPDwgdiA8PCAgc3RkOjplbmRsOwp9CgppbnQgbWFpbigpIHsKCWZvbzxpbnQ+KDEpOwoJZm9vPGNvbnN0IGludD4oMSk7CglyZXR1cm4gMDsKfQ==