Opened 6 years ago
Closed 5 years ago
#12363 closed Bugs (fixed)
int_adapter is_signed should be const
Reported by: | Owned by: | James E. King, III | |
---|---|---|---|
Milestone: | Boost 1.67.0 | Component: | date_time |
Version: | Boost 1.54.0 | Severity: | Cosmetic |
Keywords: | Cc: |
Description
In int_adapter at lines 171 to 183, with coverity comments:
171 bool operator<(const int& rhs) const 172 { 173 // quiets compiler warnings assignment: Assigning: is_signed = true. 174 bool is_signed = std::numeric_limits<int_type>::is_signed; const: At condition is_signed, the value of is_signed must be equal to 1. dead_error_condition: The condition !is_signed cannot be true. 175 if(!is_signed) 176 { CID 10153 (#1 of 1): 'Constant' variable guards dead code (DEADCODE)dead_error_line: Execution cannot reach this statement: if (boost::date_time::int_a.... Local variable is_signed is assigned only once, to a constant value, making it effectively constant throughout its scope. If this is not the intent, examine the logic to see if there is a missing assignment that would make is_signed not remain constant. Otherwise, declaring is_signed as const will suppress this defect. 177 if(is_neg_inf(value_) && rhs == 0) 178 { 179 return true; 180 } 181 } 182 return (compare(rhs) == -1); 183 }
Coverity picks this up indicating that if is_signed was const (or perhaps even better in C++11 a constexpr?) it would allow the compiler to optimize better.
This is in the development trunk back to at least 1.54.
Change History (3)
comment:1 by , 5 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
comment:2 by , 5 years ago
Milestone: | To Be Determined → Boost 1.67.0 |
---|
comment:3 by , 5 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Fix merged to master; resolved.
Note:
See TracTickets
for help on using tickets.
https://github.com/boostorg/date_time/pull/60