根据http://en.cppreference.com/w/cpp/language/type_alias,别名是块级声明。它没有说明模板别名有什么特别之处,因此应该阅读模板别名也是块级声明。
但是,不可能在块级别使用模板别名。错误因编译器而异 - 虽然 g++ 给出了一个有意义的消息,说模板在块范围内是不允许的,但 clang 是完全神秘的。(例如:http ://coliru.stacked-crooked.com/a/0f0862dad6f3da61 )。
到目前为止我的问题:
- cppreference 是否未能指定模板别名不能在块范围内使用?(或者我需要参加阅读课程吗?)
- 编译器在块级别拒绝模板别名是否正确(我发现这个功能对我的特定编码习惯非常有趣)
- 如果第二个答案是肯定的,那么这样做的理由是什么?为什么编译器会拒绝我这种纯语法糖?