У меня есть особая проблема, которая заставляет мою команду беспокоиться об использовании std :: chrono.
Мы работаем с MSVS-13, поэтому C ++ 11.
У меня естьколлекция состояний объекта, хранящаяся в мультикарте, с ключом std: chrono :: milliseconds.Я хочу найти последний раз (наибольшее значение ключа продолжительности) на карте.Очевидный ответ - использовать rbegin ():
class ObjectState{};
typedef std::multimap<std::chrono::milliseconds, ObjectState> MapType
main()
{
MapType stateMap;
// add some states
// read the last time
std::chrono::milliseconds lastTime = stateMap.rbegin()->first;
}
Но в моей сборке это ядра.Глядя на отладчик, кажется, что rbegin () указывает на недопустимое местоположение после карты, как должен делать end ().
И я подтвердил, что увеличение итератора, возвращаемого rbegin (), действительно достигаетпоследний элемент на карте.
Все, что я прочитал, говорит, что оно не должно так себя вести, и если я наберу карту "double" вместо "std :: chrono :: milliseconds", то rbegin () -> first дает наибольшее время, как я и ожидал.
Есть ли какая-то причина для несовместимости std :: chrono и std :: multimap?