C++11 std::map 程序无法在 clang 3.4 中编译
A C++11 std::map program can't be compiled in clang 3.4
我是c++新手。我试图在clang 3.4中编译一个非常简单的std::map程序,带有"-std=c++11 -stdlib=libc++"标志,我得到了我不理解的错误。
#include<map>
#include<string>
template<typename KeyType>
struct ReverseSort {
bool operator() (const KeyType& key1, const KeyType& key2) {
return (key1 > key2);
}
};
int main() {
using namespace std;
map<int, string> mapIntToString1;
map<int, string, ReverseSort<int> > mapIntToString4(mapIntToString1.cbegin(), mapIntToString1.cend());
return 0;
}
错误是:
map:457:17: error: no matching function for call to object of type 'const ReverseSort<int>'
我知道错误来自main()的第三行,只是不明白为什么。同样的程序在g++ 4.8.2中使用"-std=c++11"标志也很好,我相信它在VC2010中也很好。
谢谢。
您的operator()
成员必须是const
:
bool operator() (const KeyType& key1, const KeyType& key2) const
{ // ^^^^^
return (key1 > key2);
}
相关文章:
- 通过自制软件(macOS)安装的clang++:编译错误
- 在使用 Clang 编译 DLL 时指定 DEF 文件
- constexpr 使用 clang 编译 TensorFlow 时出错
- clang编译的程序在std::any_cast期间抛出std::bad_any_cast
- 使用 Android NDK 使用 clang++ 编译C++代码时对"_Unwind_Resume"的未定义引用
- 为什么这段代码无法使用 gcc 4.8.5 编译,而使用 clang 编译正常
- 向 cppFlags 添加"-O0"无法禁用 Android Studio 中的 clang 编译优化
- C++汇编代码分析(使用 clang 编译)
- 为什么以下代码不使用GCC编译,而是用Clang编译罚款
- clang编译错误与static_assert和boost :: hana有关
- clang 编译模板类,并在标题中实现
- 在Windows上使用clang编译CUDA时的重新定义
- 如何在OSX上为clang编译 #include < 实验/任意>
- constexpr 唯一 ID,使用 clang 编译,但不使用 GCC 编译
- 是否可以仅在Windows上使用Clang编译C ++
- 当我用clang编译代码时,GCOV会出现内存错误
- 在MacOS上使用gcc-8而不是clang编译Qt5
- 如何使用 clang 编译特殊的数学函数
- 使用 gcc 编译和使用 clang 编译代码时未定义的引用
- 使用clang编译时regex-segfault,可能存在编译器错误