![](/img/trans.png)
[英]std::chrono::system_clock + now() to milliseconds and back different behavior
[英]Can std::chrono::system_clock::now() throw an exception?
我想寫一個非常可移植的代碼,我需要在初始化中調用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中的答案非常明顯。 但一般情況呢?
來自§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段,滿足TrivialClock
要求的時鍾的now()
成員函數不應拋出:
如果出現以下情況,
TC
類型符合TrivialClock
要求:[...]
- 函數
TC::now()
不會拋出異常 ,並且[...]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.