Arn*_*aud 2 c++ portability language-lawyer c++11 c++-chrono
我想写一个非常可移植的代码,我需要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中的答案非常明显.但一般情况呢?
Pra*_*ian 11
来自§20.11.7.1
class system_clock {
public:
  ...
    static time_point now() noexcept;  
  ...
};
所以标准规定它不能抛出异常.
这个函数可以抛出异常吗?
不,它不能.
根据C++ 11标准的第20.11.7/1段,system_clock必须满足TrivialClock要求.
此外,根据第20.11.3/4段now(),满足TrivialClock要求的时钟的成员功能不得抛出:
在以下情况下,类型
TC符合TrivialClock要求:[...]
- 该函数
TC::now()不会抛出异常,并且[...]
| 归档时间: | 
 | 
| 查看次数: | 997 次 | 
| 最近记录: |