decltypeを使うと、指定された式の型を取得することができる。
decltype - cpprefjp C++日本語リファレンス
decltypeで取得した型で変数宣言など、一般の型と同じように使える。
前回の、後置戻り値型に使ったり、
変数宣言に使ったり、
参照も判断できる。
$ vi decltype.cpp $ g++ decltype.cpp -o decltype -std=c++11 $ ./decltype str1 = ABC typeid(str2).name() = NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE str2 = XYZ ref2 = XYZ str1 = XXX str2 = YYY typeid(ret).name() = f ret = 10.5 $
str2やretのtypeidはちょっと独特だけど。
Sample/cpp/decltype/decltype/src/decltype at master · bg1bgst333/Sample · GitHub