日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

返回值类型与函数类型不匹配_C++返回值类型后置(跟踪返回值类型)

發布時間:2025/3/15 c/c++ 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 返回值类型与函数类型不匹配_C++返回值类型后置(跟踪返回值类型) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在泛型編程中,可能需要通過參數的運算來得到返回值的類型。考慮下面這個場景:

template <typename R, typename T, typename U>R add(T t, U u){ return t+u;}int a = 1; float b = 2.0;auto c = add<decltype(a + b)>(a, b);

我們并不關心 a+b 的類型是什么,因此,只需要通過 decltype(a+b) 直接得到返回值類型即可。但是像上面這樣使用十分不方便,因為外部其實并不知道參數之間應該如何運算,只有 add 函數才知道返回值應當如何推導。

那么,在 add 函數的定義上能不能直接通過 decltype 拿到返回值呢?

template <typename T, typename U>decltype(t + u) add(T t, U u) // error: t、u尚未定義{ return t + u;}

當然,直接像上面這樣寫是編譯不過的。因為 t、u 在參數列表中,而?C++?的返回值是前置語法,在返回值定義的時候參數變量還不存在。

可行的寫法如下:

template <typename T, typename U>decltype(T() + U()) add(T t, U u){ return t + u;}

考慮到 T、U 可能是沒有無參構造函數的類,正確的寫法應該是這樣:

template <typename T, typename U>decltype((*(T*)0) + (*(U*)0)) add(T t, U u){ return t + u;}

雖然成功地使用 decltype 完成了返回值的推導,但寫法過于晦澀,會大大增加 decltype 在返回值類型推導上的使用難度并降低代碼的可讀性。

因此,在 C++11 中增加了返回類型后置(trailing-return-type,又稱跟蹤返回類型)語法,將 decltype 和 auto 結合起來完成返回值類型的推導。返回類型后置語法是通過 auto 和 decltype 結合起來使用的。上面的 add 函數,使用新的語法可以寫成:

template <typename T, typename U>auto add(T t, U u) -> decltype(t + u){ return t + u;}

為了進一步說明這個語法,再看另一個例子:

int& foo(int& i);float foo(float& f);template auto func(T& val) -> decltype(foo(val)){ return foo(val);}

如果說前一個例子中的 add 使用 C++98/03 的返回值寫法還勉強可以完成,那么這個例子對于 C++ 而言就是不可能完成的任務了。

在這個例子中,使用 decltype 結合返回值后置語法很容易推導出了 foo(val) 可能出現的返回值類型,并將其用到了 func 上。返回值類型后置語法,是為了解決函數返回值類型依賴于參數而導致難以確定返回值類型的問題。有了這種語法以后,對返回值類型的推導就可以用清晰的方式(直接通過參數做運算)描述出來,而不需要像 C++98/03 那樣使用晦澀難懂的寫法。

總結

以上是生活随笔為你收集整理的返回值类型与函数类型不匹配_C++返回值类型后置(跟踪返回值类型)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 手机在线看片国产 | 国产大奶在线观看 | 五号特工组之偷天换月 | 九九热在线免费视频 | 亚洲aⅴ乱码精品成人区 | av先锋资源 | 国产一区二区福利 | 日韩xxxxxxxxx | 亚洲国产精品电影 | 日本在线高清 | 男女啪啪免费 | 丝袜人妻一区二区三区 | 九九色九九 | 就爱啪啪网 | 先锋影音av在线资源 | 69久人妻无码精品一区 | 日韩成人免费在线视频 | 金瓶狂野欧美性猛交xxxx | 四虎永久网址 | 国产又大又黑又粗免费视频 | 动漫羞羞| 911福利视频 | 日韩av在线免费看 | 麻豆精品91| 亚洲精品一区三区三区在线观看 | 天天躁夜夜躁 | 亚洲成人一区二区三区 | 色老汉av一区二区三区 | 日韩av无码一区二区三区 | 黄色av地址| 一区二区视| 亚洲日本国产精品 | 黑人操少妇 | 久久99草 | 欧美久久天堂 | 日韩av导航| 综合网久久 | 伊人网综合在线 | 日韩无套无码精品 | 91欧美大片| 国产精品久久久久久久久夜色 | 五月天色网站 | 在线播放91 | 在线日韩三级 | 福利午夜视频 | 久久久久久国产精品三级玉女聊斋 | 国产一及片 | 欧美日韩国产中文 | 国产亚洲精品精品国产亚洲综合 | 福利一区福利二区 | 久久成人黄色 | 自宅警备员在线观看 | 免费视频成人 | 国产精品电影 | 青青青青操 | 爱爱精品 | 色妻av | 亚洲成av人在线观看 | 日本精品一区二区在线观看 | 国产v亚洲 | 久久久久久9| 黄色片99| 一本色道久久综合无码人妻 | 免费黄色大片 | 精品国语对白 | 成人3d动漫一区二区三区 | 91视频大全 | 亚洲av无码专区在线电影 | 国产精品三级久久久久久电影 | 国产成人无码一区二区三区在线 | 亚洲二区精品 | 精品一区二区视频在线观看 | 日本韩国欧美一区 | 精品久久久久久久久久久国产字幕 | 手机在线中文字幕 | 色偷偷人人澡人人爽人人模 | 午夜亚洲天堂 | 国产精品传媒在线 | 激情午夜天 | 午夜在线一区二区三区 | 成人毛片一区二区三区 | 国产毛毛片 | 麻豆精品91 | 国产999久久久 | 天天色官网 | 国产精品无码中文字幕 | 国产激情视频一区二区 | 欧美一区二区三区影视 | 原来神马电影免费高清完整版动漫 | 欧美日韩精品在线视频 | 欧美aaa大片 | аⅴ资源天堂资源库在线 | 雪白的扔子视频大全在线观看 | 国产精久久久久久 | 免费网站观看www在线观 | 青青国产在线视频 | 欧美日韩一区二区三区不卡 | av国产精品 | 国产一区二区三区色淫影院 |