From df03f1370053c500ffc81f96b82a5c847948246a Mon Sep 17 00:00:00 2001 From: Vahagn Khachatryan Date: Fri, 23 Sep 2016 13:27:02 -0400 Subject: [PATCH] Integral type addition is converted to int. --- cpp/char_plus_char_is_int.cpp | 48 +++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 cpp/char_plus_char_is_int.cpp diff --git a/cpp/char_plus_char_is_int.cpp b/cpp/char_plus_char_is_int.cpp new file mode 100644 index 0000000..d41b64f --- /dev/null +++ b/cpp/char_plus_char_is_int.cpp @@ -0,0 +1,48 @@ +/* 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 + +char * f( unsigned long ){ return "unsigned long"; } +char * f( unsigned int ){ return "unsigned int"; } +char * f( unsigned short ){ return "unsigned short"; } +char * f( unsigned char ){ return "unsigned char"; } +char * f( long ){ return "long"; } +char * f( int ){ return "int"; } +char * f( short ){ return "short"; } +char * f( char ){ return "char"; } + +template +char * g() { + return f( T(1) + T(2) ); +} + +template +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; +}