С++ 'typedef' vs. 'using... =...'
Возможный дубликат:
Каковы различия между typedef и использованием в С++ 11?
Следующий код компилируется и запускается. Мой вопрос в чем разница между методом "typedef" и "use" для переименования специализации шаблона?
template<typename T>
struct myTempl{
T val;
};
int main (int, char const *[])
{
using templ_i = myTempl<int>;
templ_i i;
i.val=4;
typedef myTempl<float> templ_f;
templ_f f;
f.val=5.3;
return 0;
}
Изменить:
Если нет никакой разницы, какой из них вы бы предпочли?/Почему была использована версия... =...?
Ответы
Ответ 1
Они одинаковы.
Чтобы указать стандарт С++ 11 (или конкретный проект):
Имя typedef также может быть введено с помощью объявления alias. Идентификатор, следующий за с использованием ключевого словастановится typedef-name и необязательным атрибутом-спецификатором-seq, следующим за идентификатором, к этому ЬурейеЕ имя. Он имеет ту же семантику, что и его спецификатор typedef. В частности, это не определяет новый тип и не будет отображаться в идентификаторе типа.
Я думаю, что "те же семантики, что и спецификатор typedef", говорят все.