第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請問C ++調(diào)用顯式模板構(gòu)造函數(shù)

請問C ++調(diào)用顯式模板構(gòu)造函數(shù)

C++
慕的地6264312 2019-11-03 08:04:58
您能告訴我如何顯式調(diào)用模板構(gòu)造函數(shù)(在初始化列表中)嗎?例如:struct T {     template<class> T();};struct U {    U() : t<void>() {} //does not work    T t;};謝謝
查看完整描述

1 回答

?
慕哥9229398

TA貢獻(xiàn)1877條經(jīng)驗 獲得超6個贊

這是不可能的。該標(biāo)準(zhǔn)對此也有注釋14.8.1/7


[注意:因為顯式模板參數(shù)列表緊隨功能模板名稱,并且由于在不使用函數(shù)名稱的情況下調(diào)用轉(zhuǎn)換成員函數(shù)模板和構(gòu)造函數(shù)成員函數(shù)模板,所以無法為這些功能模板提供顯式模板參數(shù)列表。]


說明:這說:模板參數(shù)在函數(shù)模板名稱(例如)之后的尖括號中傳遞std::make_pair<int, bool>。構(gòu)造函數(shù)沒有自己的名稱,但是會在各種上下文中濫用其類名稱(因此,U<int>()意味著:傳遞<int>給類模板U,并通過調(diào)用不帶參數(shù)的默認(rèn)構(gòu)造函數(shù)來構(gòu)造對象)。因此,不能將模板參數(shù)傳遞給構(gòu)造函數(shù)。


在您的情況下,您嘗試在成員初始化程序中傳遞模板參數(shù)。在這種情況下,還有更多的問題:它將嘗試將其解析和解釋t<void>為基類類型,并認(rèn)為您想調(diào)用基類的默認(rèn)構(gòu)造函數(shù)。當(dāng)然,這將失敗。


如果可以忍受,可以解決它


struct T { 

    template<class U> T(identity<U>);

};


struct U {

    U() : t(identity<void>()) {}

    T t;

};

由于identity喜歡它的升壓轉(zhuǎn)換器的定義


template<typename T> struct identity { typedef T type; };



查看完整回答
反對 回復(fù) 2019-11-04
  • 1 回答
  • 0 關(guān)注
  • 278 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號