В С++ 11 вы можете создать "псевдоним типа", выполнив что-то вроде
template <typename T>
using stringpair = std::pair<std::string, T>;
Но это отклонение от того, что вы ожидаете от шаблона typedef:
template <typename T>
typedef std::pair<std::string, T> stringpair;
Итак, возникает вопрос: зачем им придумывать новый синтаксис? что это не работало со старым синтаксисом typedef
?
Я понимаю, что последний бит не компилируется, но почему его нельзя компилировать?