【发布时间】:2017-04-26 06:22:49
【问题描述】:
我有一个类定义为:
template <typename V, typename E>
class AdjacencyList;
其中V和E分别是顶点和边值的类型。
我目前正在尝试在AdjacencyList 中定义以下成员函数:
std::map< std::shared_ptr< Vertex<V, E> >, E > dijkstra(
const std::shared_ptr< Vertex<V, E> > &start_vertex) const;
对于熟悉 Dijkstra 算法的人来说,只有当E 是可加且非负类型时才能正确实现。因此,如果E 是无符号整数类型,如何正确使用enable_if 构造来启用此功能?
我目前在这里看到两个令我不舒服的并发症:
- 返回类型和参数都与
E有关。 -
E本身不用作类型,而是用于其他类型模板中。
因为我对enable_if 结构比较陌生,所以我会更愿意接受有关该问题的一些指导,因为这是一个相对不平凡的案例。
【问题讨论】: