#include <iostream>
template < typename T, T b, unsigned int e >
struct pow : std::integral_constant< decltype(b*1), b * pow<T,b,e-1>::value > {} ;
template < typename T, T b >
struct pow<T,b,0> : std::integral_constant< decltype(b*1), 1 > {} ;
int main()
{
std::cout << pow< char, 'd', 3 >::value << '\n' ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGUgPCB0eXBlbmFtZSBULCBUIGIsIHVuc2lnbmVkIGludCBlID4Kc3RydWN0IHBvdyA6IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8IGRlY2x0eXBlKGIqMSksIGIgKiBwb3c8VCxiLGUtMT46OnZhbHVlID4ge30gOwoKdGVtcGxhdGUgPCB0eXBlbmFtZSBULCBUIGIgPgpzdHJ1Y3QgcG93PFQsYiwwPiA6IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8IGRlY2x0eXBlKGIqMSksIDEgPiB7fSA7CgppbnQgbWFpbigpCnsKICAgIHN0ZDo6Y291dCA8PCBwb3c8IGNoYXIsICdkJywgMyA+Ojp2YWx1ZSA8PCAnXG4nIDsKfQo=