3 回答

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個(gè)贊
我想我找到了答案:GCC問(wèn)題:使用依賴于模板參數(shù)的基類成員。答案并非針對(duì)gcc。
更新:回應(yīng)mmichael的評(píng)論,來(lái)自C ++ 11標(biāo)準(zhǔn)的N3337草案:
14.6.2從屬名稱[temp.dep]
[...]
3在類或類模板的定義中,如果基類依賴于模板參數(shù),則在非限定名稱查找期間不會(huì)檢查基類范圍類模板或成員的定義點(diǎn),或者在類模板或成員的實(shí)例化過(guò)程中。
無(wú)論是“因?yàn)闃?biāo)準(zhǔn)是這樣說(shuō)的”算作一個(gè)答案,我不知道。我們現(xiàn)在可以問(wèn)為什么標(biāo)準(zhǔn)要求,但正如Steve Jessop的優(yōu)秀答案和其他人所指出的那樣,后一個(gè)問(wèn)題的答案相當(dāng)長(zhǎng)且可論證。不幸的是,當(dāng)涉及到C ++標(biāo)準(zhǔn)時(shí),通常幾乎不可能給出標(biāo)準(zhǔn)強(qiáng)制要求的簡(jiǎn)短而自成一體的解釋; 這也適用于后一個(gè)問(wèn)題。

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超4個(gè)贊
在x
繼承過(guò)程中被隱藏。你可以通過(guò)以下方式取消隱藏:
template <typename T>class derived : public base<T> {public: using base<T>::x; // added "using" statement int f() { return x; }};
- 3 回答
- 0 關(guān)注
- 772 瀏覽
添加回答
舉報(bào)