【发布时间】:2018-01-21 10:07:32
【问题描述】:
以下代码使用带有 C++17 集的 gcc 7.1.0 编译,但不能使用 C++14 集(或 Visual Studio 2017)编译。在Wandbox上很容易复现。
必须做些什么才能使其与 C++11/14 一起使用?
#include <iostream>
#include <chrono>
int main()
{
struct Convert
{
operator std::chrono::milliseconds()
{
std::cout << "operator std::chrono::milliseconds" << std::endl;
return std::chrono::milliseconds(10);
}
operator int64_t ()
{
std::cout << "operator int64_t" << std::endl;
return 5;
}
};
Convert convert;
std::chrono::milliseconds m(convert);
std::cout << m.count() << std::endl;
int64_t i(convert);
std::cout << i << std::endl;
}
【问题讨论】:
-
我不确定它的来龙去脉,但如果你让你的两个函数
const它为我编译。 (添加缺失部分后) -
如果我不将它们设为
const但我将它们设为explicit,它也会编译。再说一次,不知道它的来龙去脉。 -
请发布编译器错误信息
标签: c++ c++14 chrono conversion-operator c++17