Я написал решение для windows с использованием MSVC2015, где следующий код преобразует std :: filesystem :: last_write_time result time_t:
time_t ftime = std::file_time_type::clock::to_time_t(fs::last_write_time("/Path/filename"))
Это работает хорошо. Затем, когда я попытался перенести решение на Linux, используя g cc 9.3 (-std = C ++ 2a), я получил следующую ошибку:
Ошибка: 'to_time_t' не является членом 'std :: chrono :: time_point :: clock' {aka 'std :: filesystem :: __ file_clock'}
Я искал решение, но то, что я нашел, основано на решении включен на примере std :: filesystem :: last_write_time в cplusplus.com . Решение показано ниже:
auto ftime = fs::last_write_time(p);
std::time_t cftime = decltype(ftime)::clock::to_time_t(ftime);
К сожалению, оно не работает для меня. На самом деле, в примере есть комментарий, который говорит, что он не будет работать на MSV C (работал на MSVC2015) или G CC 9; C ++ 20 позволит переносить вывод.
Теперь я застрял ... Как я могу сделать это преобразование, используя g cc?