Я знаю, что в 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);?