是否有可能做这样的事情:
template <typename T, typename Comparator = std::less<typename T::Key>>
struct Container
{
std::map<typename T::Key, T*, Comparator> m;
};
这是问题的一部分:typename Comparator = std::less<typename T::Key>
即在 T 的实现中有一个 typedef 用于比较器的专业化。是否总是需要将比较器使用的东西 (T::Key) 指定为模板的显式参数?
我意识到通过更改 T 类还有其他方法可以解决这个问题(例如,需要一个显式的 T::compareKey 方法),但问题更多的是是否可以使用模板语法来实现这样的事情。