我想写一个非常可移植的代码,我需要在初始化中调用std::chrono::system_clock::now()
。这个函数可以抛出异常吗?
在c ++ 11标准中,没有提到该问题。 (至少,我没有找到一个)
在Visual Studio中,源代码如下:
static time_point now() _NOEXCEPT
{ // get current time
return (time_point(duration(_Xtime_get_ticks())));
}
使用_NOEXCEPT关键字,visual studio中的答案非常明显。但是一般情况呢?
答案 0 :(得分:11)
来自§20.11.7.1
class system_clock {
public:
...
static time_point now() noexcept;
...
};
因此标准规定它不能抛出异常。
答案 1 :(得分:8)
此函数可以抛出异常吗?
没有,它不能。
根据C ++ 11标准的第20.11.7 / 1段,system_clock
必须满足TrivialClock
要求。
此外,根据第20.11.3 / 4段,满足now()
要求的时钟TrivialClock
成员函数不得抛出:
如果出现以下情况,
TC
类型符合TrivialClock
要求:[...]
- 函数
TC::now()
不会抛出异常和[...]