簡體   English   中英

可以std :: chrono :: system_clock :: now()拋出異常嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM