1. 程式人生 > >decltype 與 後置型別

decltype 與 後置型別

1、一個簡單的加法模板:

template <class T>
T Add(T a,T b)
{
    return a+b;
}

如果改寫成這樣:

template <class T>
T Add(T a, T b)
{
    ?type? nuo = a+b;
}

其中nuo的a+b的型別是無法提前知道的,則可以用:

template <class T>
T Add(T a, T b)
{
    decltype(a+b) nuo = a+b;
}

其中decltype(a+b) 表示自動推斷型別為 a+b的型別。

2、後置型別
如果無法預先知道將a和b相加得到的型別則可以使用後置型別.
比如:

double h(int x,float y);

可變為:

auto h(int x,float y)->decltype(x+y);
auto h(int x,float y)->double;

書籍c++ permer plus 295 - 297 頁(個人複習筆記)