0
的成员考虑一下:指针类型名
template < typename VectorType >
void ff()
{
// This passes.
typedef typename VectorType::value_type VV;
typedef int VV::* MM;
// This FAILS!??
typedef int typename VectorType::value_type::* MMM;
}
为什么第二次失败,是什么让一个typedef语句所需的typedef正确的方法是什么?
我的编译器是GCC-4.7.2。
它是否像'typedef int VectorType :: value_type :: * MMM'一样工作? –
@KerrekSB我相信你应该把它变成一个答案,'typename'在这里显然是多余的(在'::'右边没有标识符)。 – Angew
@Angew:这不仅仅是多余的*。在那里使用'typename'是不正确的。 – Nawaz