在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; }

慕沐林林
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

呼啦一陣風
TA貢獻1802條經驗 獲得超6個贊
還可以通過別名聲明引入tydurif名稱。Using關鍵字后面的標識符變成tyduif-name,而標識符后面的可選屬性-說明符-seq屬于該ty胡枝子名。 它具有相同的語義,就好像它是由tyHuif說明符引入的一樣。特別是,它不定義新類型,并且它不應出現在類型id中。
- 3 回答
- 0 關注
- 447 瀏覽
添加回答
舉報
0/150
提交
取消