【发布时间】:2011-06-30 08:31:32
【问题描述】:
我正在编写一个函数来比较两个列表的内容。元素的顺序无关紧要,所以我在比较之前对它们进行了排序。列表可以是普通类型list<int>,也可以是列表列表list<list<int> >。
这是一个完整的精简示例:
#include <list>
template <typename T>
bool lessThanInAnyOrder(T lhs, T rhs)
{
return lhs < rhs;
}
template <typename T>
bool lessThanInAnyOrder(std::list<T> lhs, std::list<T> rhs)
{
lhs.sort(lessThanInAnyOrder<T>);
rhs.sort(lessThanInAnyOrder<T>);
//Do comparisons here, but for now just:
return false;
}
int main()
{
std::list<int> list1;
std::list<int> list2;
lessThanInAnyOrder(list1, list2);
}
这在 GCC 4.3.3 中编译,但在 Visual Studio 2008 中,我调用 lhs.sort() 时会出现以下编译错误:
error C2660: 'std::list<_Ty>::sort' : function does not take 1 arguments
有什么建议吗?
【问题讨论】:
-
使用 g++ (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2 为我完美编译
-
@Draco Ater,不能在 ideone.com/Hx5St 上编译
-
我正在使用 Visual Studio 2008。现在用该信息更新了问题。
标签: c++ templates stl generic-programming