Я знаю, що в C ++ 11 тепер ми можемо використовувати using
для написання псевдонімів типу, наприклад typedef
s:
typedef int MyInt;
З того, що я розумію, рівнозначне:
using MyInt = int;
І цей новий синтаксис з'явився із спроби створити спосіб " template typedef
":
template< class T > using MyType = AnotherType< T, MyAllocatorType >;
Але, маючи перші два приклади, що не є шаблонами, чи є якісь інші тонкі відмінності в стандарті? Наприклад, typedef
s роблять псевдонім «слабким» способом. Тобто це не створює нового типу, а лише нове ім’я (перетворення між тими іменами неявні).
Це те саме using
чи він генерує новий тип? Чи є відмінності?
typedef void MyFunc(int,int);
(що насправді не виглядає так погано), абоusing MyFunc = void(&)(int,int);
using MyFunc = void(&)(int,int);
? чи означає MyFunc
це посилання на функцію? що робити, якщо пропустити & ?
typedef void (&MyFunc)(int,int);
. Якщо опустити &
його, це рівнозначноtypedef void MyFunc(int,int);
typedef void (&MyFunc)(int,int);
чиusing MyFunc = void(int,int);
?