Я бы хотел использовать std :: tm () в качестве ключа для контейнера std :: map. Но когда я пытаюсь его скомпилировать, я получаю много (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: \ программные файлы (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 _Elem *' из 'const tm' c: \ программные файлы (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> & 'from' const tm 'c: \ программные файлы (x86) \ microsoft визуальная студия 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;
};