为什么我可以编译以下内容:
typedef void OnSuccessSignature(PathFinderType::EdgePath);
但不是吗?:
using OnSuccessSignature = void(PathFinderType::EdgePath);
第二行给出C2061: syntax error : identifier 'EdgePath'
如果它有所不同,该类的相关部分被定义为
class MapManager : public Service<MapManager>
{
public:
// Aliases.
using PathFinderType = AStar<Map::MapNodeType, WeightedEuclideanDistance<Map::MapNodeType>>;
using OnSuccessSignature = void(PathFinderType::EdgePath);
// ...
}
和AStar
template <typename TNode, typename THeuristic = EuclideanDistanceSqrd<TNode>>
class AStar : Detail::AStarHeap<TNode>
{
public:
// Aliases.
using EdgePath = list<typename TNode::EdgeType*>;
// ...
}
我在第一个中加入了第二个标题。