Я знаю, что в С++ 11 мы теперь можем использовать using
для записи псевдонима типа, например typedef
s:
typedef int MyInt;
Я понимаю, что, как я понимаю, эквивалентно:
using MyInt = int;
И этот новый синтаксис возник из стремления выразить "template typedef
":
template< class T > using MyType = AnotherType< T, MyAllocatorType >;
Но с первыми двумя примерами, отличными от шаблонов, существуют ли какие-либо другие тонкие различия в стандарте? Например, typedef
делает сглаживание "слабым" способом. То есть он не создает новый тип, а только новое имя (конверсии неявны между этими именами).
То же самое с using
или он генерирует новый тип? Существуют ли какие-либо различия?