/* Check cf5-opt.vim defs. VIM: let g:lcppflags="-std=c++11 -O2 -pthread" VIM: let g:wcppflags="/O2 /EHsc /DWIN32" VIM: let g:cppflags=g:Iboost.g:Itbb VIM: let g:ldflags=g:Lboost.g:Ltbb.g:tbbmalloc.g:tbbmproxy VIM: let g:ldlibpath=g:Bboost.g:Btbb VIM: let g:argv="" VIM-: let g:cf5output=0 */ #include const char * f( unsigned long ){ return "unsigned long"; } const char * f( unsigned int ){ return "unsigned int"; } const char * f( unsigned short ){ return "unsigned short"; } const char * f( unsigned char ){ return "unsigned char"; } const char * f( long ){ return "long"; } const char * f( int ){ return "int"; } const char * f( short ){ return "short"; } const char * f( char ){ return "char"; } template const char * g() { return f( T(1) + T(2) ); } template const char * h() { return f( T1(1) + T2(2) ); } int main ( void ) { std::cout << "char+char=" << g() << std::endl; std::cout << "short+short=" << g() << std::endl; std::cout << "int+int=" << g() << std::endl; std::cout << "long+long=" << g() << std::endl; std::cout << "uchar+uchar=" << g() << std::endl; std::cout << "ushort+ushort=" << g() << std::endl; std::cout << "uint+uint=" << g() << std::endl; std::cout << "ulong+ulong=" << g() << std::endl; std::cout << std::endl; std::cout << "uchar+char=" << h() << std::endl; std::cout << "uint+int=" << h() << std::endl; std::cout << "ulong+long=" << h() << std::endl; std::cout << "ulong+int=" << h() << std::endl; std::cout << "uint+long=" << h() << std::endl; return 0; }