我有一个向量:
std::vector<std::weak_ptr<SignalFunction>> m_connections
然后,我想以通用的方式声明一个共享指针的向量,该向量的类型与弱指针保持的类型相同:
std::vector<std::shared_ptr<typename typename decltype(m_connections)::value_type::element_type>> validConnections;它在Visual 2013中编译得很好,但在iOS的Xcode中不编译。错误:
期望在“typename”之后有限定名
然而,这样做很好:
typedef decltype(m_connections)::value_type ValueType;
std::vector<std::shared_ptr<typename ValueType::element_type>> validConnections如何避免使用中间typedef
发布于 2014-12-23 10:00:33
你只需要一个typename。编写typename T::some_type::other_type时,编译器知道some_type必须是类型名称,因为它后面紧跟着::。只有最后一个元素(other_type)必须进行显式注释,为此,一个typename就足够了。
https://stackoverflow.com/questions/27617941
复制相似问题