偶爾看到的c11新特性2

1.關鍵字decltype:c++

在c98模板缺陷的改進,例:code

template<class T1,class T2>
void ft(T1 x,T2 y)
{
    ...?type xpy = x+y;//類型不知道,涉及類型轉換,運算符重載.    
}

在c11增長了decltype:模板

int x;
decltype(x) y;//使得y的類型相似x.
//在上面的問題能夠這樣解決
decltype(x+y) xpy = x + y;//decltype(x+y)這總體是一種類型;
deltype具體實現比這裏的示例複雜

2.c++後置返回類型class

template<class T1,class T2 y>
?type? gt(T1 x,T2 y)
{
    ...
    return x+y;//x+y類型未知,
}

不可以使用decltype(x+y)做爲返回類型,xy還未聲明,就沒有xy,固然就沒有其類型,因此有下列語法語法

double h(int x,float y);使用新語法能夠寫成:float

auto h(int x,float y) -> double;類型轉換

則上面的模板能夠寫做:co

auto gt(T1 x,T2 y) -> decltype(x+y)
{
    ...
    return x+y;
}
相關文章
相關標籤/搜索