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