Clang warning: -Wliteral-conversion in toolbox::TimeInterval construction
Summary
Building with clang++
produces -Wliteral-conversion
warnings. They are probably unintended.
Steps to reproduce
Configure with CC=clang CXX=clang++ cmake ...
and build.
What is the expected correct behavior?
No -Wliteral-conversion
warnings.
Relevant logs and/or screenshots
[20/98] Building CXX object gembase/CMakeFiles/gembase.dir/src/GEMMonitor.cpp.o
../gembase/src/GEMMonitor.cpp:73:85: warning: implicit conversion from 'double' to 'time_t' (aka 'long') changes value from 2.5 to 2 [-Wliteral-conversion]
addInfoSpace("Application", gemFSMApp->getAppISToolBox(), toolbox::TimeInterval(2.5, 0));
~~~~~~~ ^~~
../gembase/src/GEMMonitor.cpp:79:97: warning: implicit conversion from 'double' to 'time_t' (aka 'long') changes value from 2.5 to 2 [-Wliteral-conversion]
addInfoSpace("AppStateMonitoring", gemFSMApp->getAppStateISToolBox(), toolbox::TimeInterval(2.5, 0));
~~~~~~~ ^~~
2 warnings generated.
[42/98] Building CXX object gemhardware/managers/CMakeFiles/gemhardware_managers.dir/src/amc13/AMC13Manager.cpp.o
../gemhardware/managers/src/amc13/AMC13Manager.cpp:520:40: warning: implicit conversion from 'double' to 'time_t' (aka 'long') changes value from 0.1 to 0 [-Wliteral-conversion]
toolbox::TimeInterval interval(0.1, 0); // period of 0.1 secs
~~~~~~~~ ^~~
3 warnings generated.
Environment
- Version used:
develop
- Operation System:
gem904daq04
Possible fixes
Drop the second argument. timebox::TimeInterval
has two constructors:
// Constructor from seconds/microseconds pair.
TimeInterval (time_t sec, suseconds_t usec);
// Constructor from double.
TimeInterval (double d);
Add -Werror=literal-conversion
because this warning usually finds mistakes.
Edited by Laurent Petre