|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
year::ok | ||||
| Nonmember functions | ||||
| Helper classes | ||||
(C++26) |
constexprbool ok()constnoexcept; | (since C++20) | |
Checks if the year value stored in*this is in the valid range, i.e.,[-32767, 32767].
true if the year value stored in*this is in the range[-32767, 32767]. Otherwisefalse.
See the implementations inlibstdc++,libc++,and Howard Hinnant'sdate.h.
class Year{short year_;// exposition-only public: bool ok()constnoexcept{return year_!=std::numeric_limits<short>::min();} /*...*/}; |
#include <chrono>#include <iomanip>#include <iostream> int main(){std::cout<<"input year │ internal value │ ok()\n"<<std::boolalpha; for(constint i:{2020,0x8000,0x8001,0xFFFF,0x18000}){conststd::chrono::year y{i};std::cout<<std::setw(10)<< i<<" │ "<<std::setw(14)<<static_cast<int>(y)<<" │ "<< y.ok()<<'\n';}}
Possible output:
input year │ internal value │ ok() 2020 │ 2020 │ true 32768 │ -32768 │ false 32769 │ -32767 │ true 65535 │ -1 │ true 98304 │ -32768 │ false