亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

在C+11中,類型胡枝子和使用有什么區別?

在C+11中,類型胡枝子和使用有什么區別?

C++
翻閱古今 2019-06-29 14:48:58
在C+11中,類型胡枝子和使用有什么區別?我知道在C+11中我們現在可以使用using寫入類型別名,如typedefs:typedef int MyInt;據我所知,相當于:using MyInt = int;這種新的語法來源于一種表達方式。“template typedef":template< class T > using MyType = AnotherType< T, MyAllocatorType >;但是,對于前兩個非模板的例子,在標準中還有其他細微的差別嗎?例如,typedefIt‘s以“弱”的方式進行混疊。也就是說,它不創建新類型,而只創建新名稱(在這些名稱之間隱式轉換)。是不是和using或者它會產生一種新的類型?有什么不同嗎?
查看完整描述

3 回答

?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

這個使用在模板中使用語法具有優勢。如果您需要類型抽象,但也需要保留模板參數,以便將來可以指定。你應該寫這樣的東西。

template <typename T> struct whatever {};template <typename T> struct rebind{
  typedef whatever<T> type; // to make it possible to substitue the whatever in future.};rebind<int>::type variable;template <typename U> struct bar { typename rebind<U>::type _var_member; }

使用語法簡化了這個用例。

template <typename T> using my_type = whatever<T>;my_type<int> variable;template <typename U> struct baz { my_type<U> _var_member; }


查看完整回答
反對 回復 2019-06-29
?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊

它們本質上是一樣的,但是using提供alias templates這是非常有用的。我能找到的一個很好的例子是:

namespace std {
 template<typename T> using add_const_t = typename add_const<T>::type;}

所以,我們可以用std::add_const_t<T>而不是typename std::add_const<T>::type


查看完整回答
反對 回復 2019-06-29
?
呼啦一陣風

TA貢獻1802條經驗 獲得超6個贊

它們與標準相當(重點為地雷)(7.1.3.2):

還可以通過別名聲明引入tydurif名稱。Using關鍵字后面的標識符變成tyduif-name,而標識符后面的可選屬性-說明符-seq屬于該ty胡枝子名。它具有相同的語義,就好像它是由tyHuif說明符引入的一樣。特別是,它不定義新類型,并且它不應出現在類型id中。


查看完整回答
反對 回復 2019-06-29
  • 3 回答
  • 0 關注
  • 447 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號