我想使用 std::tm () 作为 std::map-container 的键。但是当我尝试编译它时,我得到了很多(10)个错误。
例如:
1.
错误 C2784: 'bool std::operator <(const std::basic_string<_Elem,_Traits,_Alloc> &,const _Elem *)' : 无法推断出 'const std::basic_string<_Elem,_Traits,_Alloc> 的模板参数&' 来自 'const tm' c:\program files (x86)\microsoft visual studio 10.0\vc\include\xfunctional 125
2.
错误 C2784: 'bool std::operator <(const _Elem *,const std::basic_string<_Elem,_Traits,_Alloc> &)' : 无法从 'const tm' c:\ 推导出 'const _Elem *' 的模板参数程序文件 (x86)\microsoft visual studio 10.0\vc\include\xfunctional 125
3.
错误 C2784: 'bool std::operator <(const std::vector<_Ty,_Ax> &,const std::vector<_Ty,_Ax> &)' : 无法推导出 'const std::vector< 的模板参数_Ty,_Ax> &' 来自 'const tm' c:\program files (x86)\microsoft visual studio 10.0\vc\include\xfunctional 125
这一切是否意味着,我“简单地”必须创建一个比较两个 std::tm 的函数对象,因为没有为此定义标准比较?或者还有什么技巧?(或者我什至不可能?^^)
代码:
#include <map>
#include <ctime>
#include <string>
int main()
{
std::map<std::tm, std::string> mapItem;
std::tm TM;
mapItem[TM] = std::string("test");
return 0;
};