繁体   English   中英

Visual Studio 2013中的C ++ 11 chrono

[英]C++11 chrono in visual studio 2013

我正在将代码从Linux移植到Window。

并且在使用std :: chrono时我没有想到会出现错误。

由于std :: chrono是C ++标准库,我预计它无需修改即可正常工作。

下面是显示错误的代码。

错误发生在我使用带有duration实例的运算符和duration_cast函数with no instance of function template

在Linux中,代码正常工作

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)    

下面我发布一个专注于你的问题的SSCCE

#include <chrono>

using namespace std::chrono;

int main() {
  auto now = system_clock::now();
  time_point<system_clock> epoch;
  microseconds ms = duration_cast<milliseconds>(now - epoch);
  microseconds hs = std::chrono::hours(1);
  auto mm = ms % hs;
}

虽然上面的例子适用于GCCv4.9CLANGv3.4 它无法在VS2013中编译。

错误报告VC ++无法将std::chrono::microseconds转换为std::chrono::system_clock::rep

似乎实现者正在弄乱转换,我认为这是一个应该报告的可视化C ++错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM