Вы можете использовать трюк из пункта 4 Скотта Мейерс Эффективного Modern C++ сделать компилятор выявить тип сообщения об ошибке, например, так:
#include <chrono>
template < typename T >
struct TypeDiscloser;
int main() {
auto epoch_time = std::chrono::high_resolution_clock::now().time_since_epoch();
TypeDiscloser< decltype(epoch_time) > dummyVar;
}
На ideone, это дает следующее ошибка компилятора:
prog.cpp: In function 'int main()':
prog.cpp:9:42: error: aggregate 'TypeDiscloser<std::chrono::duration<long long int, std::ratio<1ll, 1000000000ll> > > dummyVar' has incomplete type and cannot be defined
TypeDiscloser< decltype(epoch_time) > dummyVar;
^
от ошибки компилятора, то тип:
std::chrono::duration<long long int, std::ratio<1ll, 1000000000ll> >
Итак, на любой платформе ideone работает std::chrono::time_point::time_since_epoch()
возвращает std::chrono::duration
с тиковым периодом 1/1000000000 секунд или 1 наносекундой. Поэтому вызов count()
по этой длительности возвращает наносекунды.
Я бы сказал, что это зависит от типа 'duration'' high_resolution_clock'. Либо проверьте его (вложенный typedef), либо используйте «duration_cast» с известным типом продолжительности. – dyp
См. Http://en.cppreference.com/w/cpp/chrono/time_point/time_since_epoch – dyp