Subject: [Boost-bugs] [Boost C++ Libraries] #11012: chrono_io v2 fail to compile with boost::chrono::duration< boost::rational<int> >
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2015-02-10 15:51:21
#11012: chrono_io v2 fail to compile with boost::chrono::duration<
boost::rational<int> >
-------------------------------------------------+-------------------------
Reporter: Sébastien Barthélémy <barthelemy@â¦> | Type: Bugs
Status: new | Milestone: To Be
Component: None | Determined
Severity: Problem | Version: Boost
| 1.57.0
| Keywords:
-------------------------------------------------+-------------------------
When using
{{{
boost::chrono::duration< boost::rational<int> >
}}}
as duration type, chrono_io v2 fails to build with error
{{{
include/boost/chrono/io/duration_units.hpp:136:91: error: invalid
static_cast from type âboost::chrono::duration<boost::rational<int> >::rep
{aka boost::rational<int>}â to type âintmax_t {aka long int}â
}}}
while chrono_io v1 builds and works as expected.
Here is the full compilation log for the attached example.
{{{
$ gcc --version
gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.
$ make
g++ -c -g -fPIC -Iinclude
-I/home/sbarthelemy/.local/share/qi/toolchains/linux64/boost/include -o
src/chrono_rational.o src/chrono_rational.cc
In file included from
/home/sbarthelemy/.local/share/qi/toolchains/linux64/boost/include/boost/chrono/io/time_point_put.hpp:16:0,
from
/home/sbarthelemy/.local/share/qi/toolchains/linux64/boost/include/boost/chrono/io/time_point_io.hpp:22,
from
/home/sbarthelemy/.local/share/qi/toolchains/linux64/boost/include/boost/chrono/chrono_io.hpp:26,
from src/chrono_rational.cc:5:
/home/sbarthelemy/.local/share/qi/toolchains/linux64/boost/include/boost/chrono/io/duration_put.hpp:
In instantiation of âboost::chrono::duration_put<CharT,
OutputIterator>::iter_type boost::chrono::duration_put<CharT,
OutputIterator>::put_value(boost::chrono::duration_put<CharT,
OutputIterator>::iter_type, std::ios_base&,
boost::chrono::duration_put<CharT, OutputIterator>::char_type, const
boost::chrono::duration<Rep2, Period2>&) const [with Rep =
boost::rational<int>; Period = boost::ratio<1l>; CharT = char;
OutputIterator = std::ostreambuf_iterator<char, std::char_traits<char> >;
boost::chrono::duration_put<CharT, OutputIterator>::iter_type =
std::ostreambuf_iterator<char, std::char_traits<char> >;
boost::chrono::duration_put<CharT, OutputIterator>::char_type = char]â:
/home/sbarthelemy/.local/share/qi/toolchains/linux64/boost/include/boost/chrono/io/duration_put.hpp:128:44:
required from âboost::chrono::duration_put<CharT,
OutputIterator>::iter_type boost::chrono::duration_put<CharT,
OutputIterator>::put(const boost::chrono::duration_units<CharT>&,
boost::chrono::duration_put<CharT, OutputIterator>::iter_type,
std::ios_base&, boost::chrono::duration_put<CharT,
OutputIterator>::char_type, const boost::chrono::duration<Rep2, Period2>&,
const CharT*, const CharT*) const [with Rep = boost::rational<int>; Period
= boost::ratio<1l>; CharT = char; OutputIterator =
std::ostreambuf_iterator<char, std::char_traits<char> >;
boost::chrono::duration_put<CharT, OutputIterator>::iter_type =
std::ostreambuf_iterator<char, std::char_traits<char> >;
boost::chrono::duration_put<CharT, OutputIterator>::char_type = char]â
/home/sbarthelemy/.local/share/qi/toolchains/linux64/boost/include/boost/chrono/io/duration_put.hpp:168:81:
required from âboost::chrono::duration_put<CharT,
OutputIterator>::iter_type boost::chrono::duration_put<CharT,
OutputIterator>::put(boost::chrono::duration_put<CharT,
OutputIterator>::iter_type, std::ios_base&,
boost::chrono::duration_put<CharT, OutputIterator>::char_type, const
boost::chrono::duration<Rep2, Period2>&) const [with Rep =
boost::rational<int>; Period = boost::ratio<1l>; CharT = char;
OutputIterator = std::ostreambuf_iterator<char, std::char_traits<char> >;
boost::chrono::duration_put<CharT, OutputIterator>::iter_type =
std::ostreambuf_iterator<char, std::char_traits<char> >;
boost::chrono::duration_put<CharT, OutputIterator>::char_type = char]â
/home/sbarthelemy/.local/share/qi/toolchains/linux64/boost/include/boost/chrono/io/duration_io.hpp:135:15:
required from âstd::basic_ostream<_CharT, _Traits>&
boost::chrono::operator<<(std::basic_ostream<_CharT, _Traits>&, const
boost::chrono::duration<Rep2, Period2>&) [with CharT = char; Traits =
std::char_traits<char>; Rep = boost::rational<int>; Period =
boost::ratio<1l>]â
src/chrono_rational.cc:11:18: required from here
/home/sbarthelemy/.local/share/qi/toolchains/linux64/boost/include/boost/chrono/io/duration_put.hpp:191:46:
error: invalid static_cast from type
âboost::chrono::duration<boost::rational<int> >::rep {aka
boost::rational<int>}â to type âlong intâ
static_cast<long int> (d.count()));
^
In file included from
/home/sbarthelemy/.local/share/qi/toolchains/linux64/boost/include/boost/chrono/io/duration_put.hpp:15:0,
from
/home/sbarthelemy/.local/share/qi/toolchains/linux64/boost/include/boost/chrono/io/time_point_put.hpp:16,
from
/home/sbarthelemy/.local/share/qi/toolchains/linux64/boost/include/boost/chrono/io/time_point_io.hpp:22,
from
/home/sbarthelemy/.local/share/qi/toolchains/linux64/boost/include/boost/chrono/chrono_io.hpp:26,
from src/chrono_rational.cc:5:
/home/sbarthelemy/.local/share/qi/toolchains/linux64/boost/include/boost/chrono/io/duration_units.hpp:
In instantiation of âboost::chrono::duration_units<CharT>::string_type
boost::chrono::duration_units<CharT>::get_unit(boost::chrono::duration_style,
const boost::chrono::duration<Rep2, Period2>&) const [with Rep =
boost::rational<int>; Period = boost::ratio<1l>; CharT = char;
boost::chrono::duration_units<CharT>::string_type =
std::basic_string<char>]â:
/home/sbarthelemy/.local/share/qi/toolchains/linux64/boost/include/boost/chrono/io/duration_put.hpp:230:70:
required from âboost::chrono::duration_put<CharT,
OutputIterator>::iter_type boost::chrono::duration_put<CharT,
OutputIterator>::put_unit(const boost::chrono::duration_units<CharT>&,
boost::chrono::duration_put<CharT, OutputIterator>::iter_type,
std::ios_base&, boost::chrono::duration_put<CharT,
OutputIterator>::char_type, const boost::chrono::duration<Rep2, Period2>&)
const [with Rep = boost::rational<int>; Period = boost::ratio<1l>; CharT =
char; OutputIterator = std::ostreambuf_iterator<char,
std::char_traits<char> >; boost::chrono::duration_put<CharT,
OutputIterator>::iter_type = std::ostreambuf_iterator<char,
std::char_traits<char> >; boost::chrono::duration_put<CharT,
OutputIterator>::char_type = char]â
/home/sbarthelemy/.local/share/qi/toolchains/linux64/boost/include/boost/chrono/io/duration_put.hpp:133:56:
required from âboost::chrono::duration_put<CharT,
OutputIterator>::iter_type boost::chrono::duration_put<CharT,
OutputIterator>::put(const boost::chrono::duration_units<CharT>&,
boost::chrono::duration_put<CharT, OutputIterator>::iter_type,
std::ios_base&, boost::chrono::duration_put<CharT,
OutputIterator>::char_type, const boost::chrono::duration<Rep2, Period2>&,
const CharT*, const CharT*) const [with Rep = boost::rational<int>; Period
= boost::ratio<1l>; CharT = char; OutputIterator =
std::ostreambuf_iterator<char, std::char_traits<char> >;
boost::chrono::duration_put<CharT, OutputIterator>::iter_type =
std::ostreambuf_iterator<char, std::char_traits<char> >;
boost::chrono::duration_put<CharT, OutputIterator>::char_type = char]â
/home/sbarthelemy/.local/share/qi/toolchains/linux64/boost/include/boost/chrono/io/duration_put.hpp:168:81:
required from âboost::chrono::duration_put<CharT,
OutputIterator>::iter_type boost::chrono::duration_put<CharT,
OutputIterator>::put(boost::chrono::duration_put<CharT,
OutputIterator>::iter_type, std::ios_base&,
boost::chrono::duration_put<CharT, OutputIterator>::char_type, const
boost::chrono::duration<Rep2, Period2>&) const [with Rep =
boost::rational<int>; Period = boost::ratio<1l>; CharT = char;
OutputIterator = std::ostreambuf_iterator<char, std::char_traits<char> >;
boost::chrono::duration_put<CharT, OutputIterator>::iter_type =
std::ostreambuf_iterator<char, std::char_traits<char> >;
boost::chrono::duration_put<CharT, OutputIterator>::char_type = char]â
/home/sbarthelemy/.local/share/qi/toolchains/linux64/boost/include/boost/chrono/io/duration_io.hpp:135:15:
required from âstd::basic_ostream<_CharT, _Traits>&
boost::chrono::operator<<(std::basic_ostream<_CharT, _Traits>&, const
boost::chrono::duration<Rep2, Period2>&) [with CharT = char; Traits =
std::char_traits<char>; Rep = boost::rational<int>; Period =
boost::ratio<1l>]â
src/chrono_rational.cc:11:18: required from here
/home/sbarthelemy/.local/share/qi/toolchains/linux64/boost/include/boost/chrono/io/duration_units.hpp:127:87:
error: invalid static_cast from type
âboost::chrono::duration<boost::rational<int> >::rep {aka
boost::rational<int>}â to type âintmax_t {aka long int}â
return do_get_unit(style, rt_ratio(Period()),
static_cast<intmax_t>(d.count()));
^
/home/sbarthelemy/.local/share/qi/toolchains/linux64/boost/include/boost/chrono/io/duration_units.hpp:
In instantiation of âboost::chrono::duration_units<CharT>::string_type
boost::chrono::duration_units<CharT>::get_n_d_unit(boost::chrono::duration_style,
const boost::chrono::duration<Rep2, Period2>&) const [with Rep =
boost::rational<int>; Period = boost::ratio<1l>; CharT = char;
boost::chrono::duration_units<CharT>::string_type =
std::basic_string<char>]â:
/home/sbarthelemy/.local/share/qi/toolchains/linux64/boost/include/boost/chrono/io/duration_put.hpp:238:74:
required from âboost::chrono::duration_put<CharT,
OutputIterator>::iter_type boost::chrono::duration_put<CharT,
OutputIterator>::put_unit(const boost::chrono::duration_units<CharT>&,
boost::chrono::duration_put<CharT, OutputIterator>::iter_type,
std::ios_base&, boost::chrono::duration_put<CharT,
OutputIterator>::char_type, const boost::chrono::duration<Rep2, Period2>&)
const [with Rep = boost::rational<int>; Period = boost::ratio<1l>; CharT =
char; OutputIterator = std::ostreambuf_iterator<char,
std::char_traits<char> >; boost::chrono::duration_put<CharT,
OutputIterator>::iter_type = std::ostreambuf_iterator<char,
std::char_traits<char> >; boost::chrono::duration_put<CharT,
OutputIterator>::char_type = char]â
/home/sbarthelemy/.local/share/qi/toolchains/linux64/boost/include/boost/chrono/io/duration_put.hpp:133:56:
required from âboost::chrono::duration_put<CharT,
OutputIterator>::iter_type boost::chrono::duration_put<CharT,
OutputIterator>::put(const boost::chrono::duration_units<CharT>&,
boost::chrono::duration_put<CharT, OutputIterator>::iter_type,
std::ios_base&, boost::chrono::duration_put<CharT,
OutputIterator>::char_type, const boost::chrono::duration<Rep2, Period2>&,
const CharT*, const CharT*) const [with Rep = boost::rational<int>; Period
= boost::ratio<1l>; CharT = char; OutputIterator =
std::ostreambuf_iterator<char, std::char_traits<char> >;
boost::chrono::duration_put<CharT, OutputIterator>::iter_type =
std::ostreambuf_iterator<char, std::char_traits<char> >;
boost::chrono::duration_put<CharT, OutputIterator>::char_type = char]â
/home/sbarthelemy/.local/share/qi/toolchains/linux64/boost/include/boost/chrono/io/duration_put.hpp:168:81:
required from âboost::chrono::duration_put<CharT,
OutputIterator>::iter_type boost::chrono::duration_put<CharT,
OutputIterator>::put(boost::chrono::duration_put<CharT,
OutputIterator>::iter_type, std::ios_base&,
boost::chrono::duration_put<CharT, OutputIterator>::char_type, const
boost::chrono::duration<Rep2, Period2>&) const [with Rep =
boost::rational<int>; Period = boost::ratio<1l>; CharT = char;
OutputIterator = std::ostreambuf_iterator<char, std::char_traits<char> >;
boost::chrono::duration_put<CharT, OutputIterator>::iter_type =
std::ostreambuf_iterator<char, std::char_traits<char> >;
boost::chrono::duration_put<CharT, OutputIterator>::char_type = char]â
/home/sbarthelemy/.local/share/qi/toolchains/linux64/boost/include/boost/chrono/io/duration_io.hpp:135:15:
required from âstd::basic_ostream<_CharT, _Traits>&
boost::chrono::operator<<(std::basic_ostream<_CharT, _Traits>&, const
boost::chrono::duration<Rep2, Period2>&) [with CharT = char; Traits =
std::char_traits<char>; Rep = boost::rational<int>; Period =
boost::ratio<1l>]â
src/chrono_rational.cc:11:18: required from here
/home/sbarthelemy/.local/share/qi/toolchains/linux64/boost/include/boost/chrono/io/duration_units.hpp:136:91:
error: invalid static_cast from type
âboost::chrono::duration<boost::rational<int> >::rep {aka
boost::rational<int>}â to type âintmax_t {aka long int}â
return do_get_n_d_unit(style, rt_ratio(Period()),
static_cast<intmax_t>(d.count()));
^
make: *** [src/chrono_rational.o] Error 1
}}}
}}}
-- Ticket URL: <https://svn.boost.org/trac/boost/ticket/11012> Boost C++ Libraries <http://www.boost.org/> Boost provides free peer-reviewed portable C++ source libraries.
This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:17 UTC