Использование std :: tm в качестве ключа в std :: map

Я бы хотел использовать 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;
};
5
задан Anthony 25 November 2011 в 00:53
поделиться