Opened 6 years ago
Closed 6 years ago
#12308 closed Bugs (invalid)
Quantities cannot be sent to std::ostream
Reported by: | Owned by: | Matthias Schabel | |
---|---|---|---|
Milestone: | To Be Determined | Component: | units |
Version: | Boost 1.61.0 | Severity: | Showstopper |
Keywords: | quantity ostream operator<< g++ | Cc: |
Description
Compiling the following program
#include <iostream> #include "boost/units/systems/si.hpp" #include "boost/units/quantity.hpp" int main() { boost::units::quantity<boost::units::si::electric_potential> quantity = 1 * boost::units::si::volt; std::cout << quantity; return 0; }
that sends a quantity to a std::ostream with operator<< result in the following error message:
13:51:55 **** Incremental Build of configuration Debug for project Test **** Info: Internal Builder is used for build g++ -std=c++0x "-IC:\\firedect\\git\\boost" -O0 -g3 -Wall -c -fmessage-length=0 -o "src\\Test.o" "..\\src\\Test.cpp" ..\src\Test.cpp: In function 'int main()': ..\src\Test.cpp:8:18: error: cannot bind 'std::ostream {aka std::basic_ostream<char>}' lvalue to 'std::basic_ostream<char>&&' std::cout << quantity; ^ In file included from c:\mingw\lib\gcc\mingw32\4.9.3\include\c++\iostream:39:0, from ..\src\Test.cpp:1: c:\mingw\lib\gcc\mingw32\4.9.3\include\c++\ostream:602:5: note: initializing argument 1 of 'std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&&, const _Tp&) [with _CharT = char; _Traits = std::char_traits<char>; _Tp = boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::length_base_dimension, boost::units::static_rational<2l> >, boost::units::list<boost::units::dim<boost::units::mass_base_dimension, boost::units::static_rational<1l> >, boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-3l> >, boost::units::list<boost::units::dim<boost::units::current_base_dimension, boost::units::static_rational<-1l> >, boost::units::dimensionless_type> > > >, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10l, boost::units::static_rational<3l> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > > > >]' operator<<(basic_ostream<_CharT, _Traits>&& __os, const _Tp& __x) ^ 13:51:56 Build Finished (took 1s.190ms)
I got a little nervous when I noticed that old #6119 seems to describe the same problem, although I don't get what it has to do with Intel and Leopard? I hope I've just made a stupid mistake in my code.
Note:
See TracTickets
for help on using tickets.
You are missing
for this to compile.