Я переношу код из Linux в Window.
И есть ошибка, которую я не ожидал при использовании std::chrono.
поскольку std::chrono является стандартной библиотекой C++, я ожидал, что она будет работать без изменений.
ниже приведен код, показывающий ошибку.
ошибка возникает в тех частях, где я использую оператор с экземплярами продолжительности и функцией duration_cast with no instance of function template
.
в линуксе код работает нормально
std::string ChronoTimer::currentTime(){
using namespace std::chrono;
auto now = system_clock::now();
time_point<system_clock> epoch;
microseconds ms = duration_cast<milliseconds>(now - epoch);
hours hour = duration_cast<hours>((ms % hours(24)) + hours(9));
minutes min = duration_cast<minutes>(ms % hours(1));
seconds sec = duration_cast<seconds>(ms % minutes(1));
milliseconds msec = duration_cast<milliseconds>(ms % seconds(1));
std::stringstream strStream;
strStream << std::setfill('0') << std::setw(2) << hour.count() << ":";
strStream << std::setfill('0') << std::setw(2) << min.count() << ":";
strStream << std::setfill('0') << std::setw(2) << sec.count() << ".";
strStream << std::setfill('0') << std::setw(3)<< msec.count();
return strStream.str();
}
1 IntelliSense: no instance of function template "std::chrono::duration_cast" matches the argument list
argument types are: (<error-type>)
2 IntelliSense: no operator "+" matches these operands
operand types are: std::chrono::system_clock::rep + std::chrono::hours
3 IntelliSense: no instance of function template "std::chrono::duration_cast" matches the argument list
argument types are: (std::chrono::system_clock::rep)