#c #templates #timestamp
Вопрос:
Я пытаюсь использовать шаблон для использования в методе класса. Однако я не могу напечатать значение.
template lt;typename Tgt; class A{ uint64_t TTL; size_t capacity; struct cacheEntry { uint32_t hash; std::dequelt;Tgt; listofTimeStamps; }; unordered_maplt;uint32_t, pairlt;std::dequelt;Tgt;, typename listlt;cacheEntrygt;::iteratorgt;gt; map; listlt;cacheEntrygt; listOfEntries; public: //Constructor A(std::size_t capacity, time_t ttl_in_seconds = 3600) : capacity(capacity), TTL(ttl_in_seconds) {} void insertOrUpdateOrEvict(uint32_t key, T timestamp) { //code code } void print(T timestamp) { cout lt;lt; timestamp; }
Объект создается как
Alt;std::chrono::system_clock::time_pointgt; cache(10, 200);
Столкнувшись с этой ошибкой — Не уверен, как напечатать эту метку времени типа std::chrono::system_clock::точка времени
error C2679: binary 'lt;lt;': no operator found which takes a right-hand operand of type 'T' (or there is no acceptable conversion) with [ T=std::chrono::system_clock::time_point ] note: while compiling class template member function 'void Alt;std::chrono::system_clock::time_pointgt;::print(T)' with [ T=std::chrono::system_clock::time_point ]
Комментарии:
1. STL не предоставляет оператор форматированного вывода (
lt;lt;
) дляstd::chrono::system_clock::time_point
типа. С чего бы это? Вам придется написать свой собственный — кто-нибудь здесь может помочь, если вы скажете нам, что вы на самом деле хотите отобразить в этом выводе.