Why does std::numeric_limits::max() return 0?

后端 未结 2 1327
走了就别回头了
走了就别回头了 2021-02-07 04:49

I found an interesting gotcha with std::numeric_limits::max() returning 0. The answer is to use seconds::max() or std::numeric_lim

2条回答
  •  失恋的感觉
    2021-02-07 05:25

    std::numeric_limits is not specialized for std::chrono::seconds. Default definitions are given for all data members and functions in std::numeric_limits to avoid compiler errors for unspecialized types. The default version of numeric_limits::max() simply returns T(), which is 0 in this case.

    You can check if std::numeric_limits is specialized for a given T at compile time by checking std::numeric_limits::is_specialized, which defaults to false.

提交回复
热议问题