smartcompile c++11
merge