亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 1988 | 回復(fù): 3
打印 上一主題 下一主題

[C++] C++11: {} 什么時(shí)候會(huì)被編譯成std::initializer_list,什么時(shí)候被認(rèn)為是其他類(lèi)型? [復(fù)制鏈接]

論壇徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2017-04-17 11:22 |只看該作者 |倒序?yàn)g覽
我有個(gè)小例子:

  1.     #include<utility>
  2.     using namespace std;
  3.     struct A{
  4.         int i;
  5.         char c;
  6.     };
  7.     void f(const A&){}
  8.     template<class T>
  9.     void g(T&& t)
  10.     {
  11.         f(forward<T>(t));
  12.     }
  13.     int main() {
  14.         A a={1,'@'};//OK
  15.         f({1,'#'});//OK
  16.         g({1,'@'});//Compilation error
  17.         return 0;
  18.     }
復(fù)制代碼


上面的代碼中,{1,'@'}本身是個(gè)初始化語(yǔ)義,`A a={1,'@'};`,編譯器判定表達(dá)式右邊的{}是一個(gè)std::initializer_list嗎?? 它會(huì)自動(dòng)轉(zhuǎn)化成為A類(lèi)型? 對(duì)于f而言也是如此嗎

問(wèn)題是: 對(duì)于模板函數(shù)g()而言,傳入?yún)?shù){1,'@'}類(lèi)型不被識(shí)別,clang編譯錯(cuò)誤如下:

  1. testArray.cpp:16:5: error: no matching function for call to 'g'
  2.     g({1,'@'});//fix: g<A>({1,'@'})
  3.     ^
  4. testArray.cpp:9:6: note: candidate template ignored: couldn't infer
  5.       template argument 'T'
  6. void g(T&& t)
  7.      ^
復(fù)制代碼

這是為什么?

論壇徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16賽季CBA聯(lián)賽之青島
日期:2016-07-05 12:36:0515-16賽季CBA聯(lián)賽之廣東
日期:2016-06-29 11:45:542015亞冠之全北現(xiàn)代
日期:2015-07-22 08:09:472015年辭舊歲徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39獅子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技術(shù)圖書(shū)徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
2 [報(bào)告]
發(fā)表于 2017-04-17 13:50 |只看該作者
編譯器判定表達(dá)式右邊的{}是一個(gè)std::initializer_list嗎?
------ 不是,這叫統(tǒng)一初始化Uniform initialization,不是 std::initializer_list

g( {1,'@'} );
改為
g( A{1,'@'} );
即可。

論壇徽章:
14
水瓶座
日期:2014-06-10 09:51:0215-16賽季CBA聯(lián)賽之江蘇
日期:2017-11-27 11:42:3515-16賽季CBA聯(lián)賽之八一
日期:2017-04-12 14:26:2815-16賽季CBA聯(lián)賽之吉林
日期:2016-08-20 10:43:1215-16賽季CBA聯(lián)賽之廣夏
日期:2016-06-23 09:53:58程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-02-11 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-02-09 06:20:0015-16賽季CBA聯(lián)賽之上海
日期:2015-12-25 16:40:3515-16賽季CBA聯(lián)賽之廣夏
日期:2015-12-22 09:39:36程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-08-24 06:20:002015亞冠之德黑蘭石油
日期:2015-08-07 09:57:302015年辭舊歲徽章
日期:2015-03-03 16:54:15
3 [報(bào)告]
發(fā)表于 2017-04-17 13:55 |只看該作者
要是編譯器能把{1,‘@’}識(shí)別成A,那真是牛逼大發(fā)了

論壇徽章:
44
15-16賽季CBA聯(lián)賽之浙江
日期:2021-10-11 02:03:59程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-02 06:20:0015-16賽季CBA聯(lián)賽之新疆
日期:2016-04-25 10:55:452016科比退役紀(jì)念章
日期:2016-04-23 00:51:2315-16賽季CBA聯(lián)賽之山東
日期:2016-04-17 12:00:2815-16賽季CBA聯(lián)賽之福建
日期:2016-04-12 15:21:2915-16賽季CBA聯(lián)賽之遼寧
日期:2016-03-24 21:38:2715-16賽季CBA聯(lián)賽之福建
日期:2016-03-18 12:13:4015-16賽季CBA聯(lián)賽之佛山
日期:2016-02-05 00:55:2015-16賽季CBA聯(lián)賽之佛山
日期:2016-02-04 21:11:3615-16賽季CBA聯(lián)賽之天津
日期:2016-11-02 00:33:1215-16賽季CBA聯(lián)賽之浙江
日期:2017-01-13 01:31:49
4 [報(bào)告]
發(fā)表于 2017-04-17 14:46 |只看該作者
回復(fù) 3# lxyscls
其實(shí)也不是完全沒(méi)有可能,至少編譯器可以挨個(gè)試一試,問(wèn)題是這么做可能會(huì)把寫(xiě)程序的人和寫(xiě)編譯器的人一起搞暈。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專(zhuān)區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP