Здравствуйте, reversecode, Вы писали:
R>кто нибудь может обьяснить мысли бухого в стельку коммитета по такому ограничению ? R>только не надо про оверфловы,их и так хоть попой жуй в C++
R>
Переполнения тут не при чем, а ошибка тут совершенно уместна. Секунды в часы не переводятся (53 секунды это сколько часов?), по-этому автоматическое преобразование заблокировано. Часы в секунды переводятся, так что обратное преобразование работает автоматически. Все так, как и должно быть.
Здравствуйте, reversecode, Вы писали:
R>кто нибудь может обьяснить мысли бухого в стельку коммитета по такому ограничению ?
Эта библиотека — это просто сборник паттернов, в которых они доведены до абсурда.
Я уже писал даже на этом форуме, что если бы там было самое тупое АПИ, которое тупо возвращает время в попугаях, и с которым бы я иногда лажал с размерностями и за 5 минут находил такие баги — то это было бы всё равно быстрее, чем по полчаса ублажать компилятор, пытаясь понять, как все эти охренительные типы, сложенные за забором из std::chrono::100500namespaced, кастовать друг другу и комбинировать.
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
template< class Rep2, class Period2 >
constexpr duration( const duration<Rep2,Period2>& d );
Constructs a new duration from one of several optional data sources.
4) Constructs a duration by converting d to an appropriate period and tick count, as if by std::chrono::duration_cast<duration>(d).count(). In order to prevent truncation during conversion, this constructor only participates in overload resolution if computation of the conversion factor (by std::ratio_divide<Period2, Period>) does not overflow and:
or both:
std::ratio_divide<Period2, period>::den == 1, and
std::chrono::treat_as_floating_point<Rep2>::value == false.