Skip to content

GCC 5.3 error: could not convert '(const char*)"-"' from 'const char*' to 'au::detail::StringConstant<1ul>' #548

@to-s

Description

@to-s

Tried to update some old sources from 0.3.5 to the current release, but seems broken since https://github.com/aurora-opensource/au/releases/tag/0.4.0. Any ideas how to handle that?

In file included from <source>:2:0:
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh: In static member function 'static constexpr au::detail::StringConstant<1ul> au::detail::SignIfPositiveIs<false>::value()':
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:560:57: error: could not convert '(const char*)"-"' from 'const char*' to 'au::detail::StringConstant<1ul>'
     static constexpr StringConstant<1> value() { return "-"; }
                                                         ^
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh: In function 'constexpr uintmax_t au::detail::find_prime_factor(uintmax_t)':
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:2854:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if (p * p > n) {
                   ^
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh: At global scope:
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:5600:90: error: 'constexpr' is not allowed in declaration of friend template specialization 'au::AlwaysDivisibleQuantity<U, R> unblock_int_div<U, R>(au::Quantity<U, R>)'
     friend constexpr AlwaysDivisibleQuantity<U, R> unblock_int_div<U, R>(Quantity<U, R> q);
                                                                                          ^
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:5601:87: error: 'constexpr' is not allowed in declaration of friend template specialization 'au::AlwaysDivisibleQuantity<au::UnitProduct<>, R> unblock_int_div<R>(R)'
     friend constexpr AlwaysDivisibleQuantity<UnitProductT<>, R> unblock_int_div<R>(R x);
                                                                                       ^
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh: In instantiation of 'struct au::Prime<11ul>':
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:2981:65:   required from 'struct au::detail::OrderByValue<au::Prime<7ul>, au::Prime<11ul> >'
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:2355:8:   required from 'struct au::LexicographicTotalOrdering<au::Prime<7ul>, au::Prime<11ul>, au::detail::OrderByValue>'
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:2985:8:   required from 'struct au::InOrderFor<au::Magnitude, au::Prime<7ul>, au::Prime<11ul> >'
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:2512:8:   required from 'struct au::PackProduct<au::Magnitude, au::Magnitude<au::Pow<au::Prime<7ul>, 1l> >, au::Magnitude<au::Prime<11ul> > >'
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:2179:90:   required by substitution of 'template<template<class ...> class Pack, class ... Ts> using PackProductT = au::detail::SimplifyBasePowersT<typename au::PackProduct<Pack, Ts>::type> [with Pack = au::Magnitude; Ts = {au::Magnitude<au::Pow<au::Prime<7ul>, 1l> >, au::Magnitude<au::Prime<11ul> >}]'
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:3133:97:   recursively required from 'struct au::detail::PrimeFactorization<77ul>'
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:3133:97:   required from 'struct au::detail::PrimeFactorization<231ul>'
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:3119:65:   required by substitution of 'template<long unsigned int N> using PrimeFactorizationT = typename au::detail::PrimeFactorization::type [with long unsigned int N = 231ul]'
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:3140:43:   required from 'constexpr auto au::mag() [with long unsigned int N = 231ul]'
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:7258:56:   required from here
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:2960:5: error: static assertion failed: Prime<N> requires that N is prime
     static_assert(detail::is_prime(N), "Prime<N> requires that N is prime");
     ^
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh: In instantiation of 'struct au::Prime<463ul>':
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:2981:65:   required from 'struct au::detail::OrderByValue<au::Prime<2ul>, au::Prime<463ul> >'
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:2355:8:   required from 'struct au::LexicographicTotalOrdering<au::Prime<2ul>, au::Prime<463ul>, au::detail::OrderByValue>'
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:2985:8:   required from 'struct au::InOrderFor<au::Magnitude, au::Prime<2ul>, au::Prime<463ul> >'
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:2512:8:   required from 'struct au::PackProduct<au::Magnitude, au::Magnitude<au::Pow<au::Prime<2ul>, 2l> >, au::Magnitude<au::Prime<463ul> > >'
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:2179:90:   required by substitution of 'template<template<class ...> class Pack, class ... Ts> using PackProductT = au::detail::SimplifyBasePowersT<typename au::PackProduct<Pack, Ts>::type> [with Pack = au::Magnitude; Ts = {au::Magnitude<au::Pow<au::Prime<2ul>, 2l> >, au::Magnitude<au::Prime<463ul> >}]'
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:2937:52:   required by substitution of 'template<class ... BPs> using MagProductT = au::PackProductT<au::Magnitude, BPs ...> [with BPs = {au::Magnitude<au::Pow<au::Prime<2ul>, 2l> >, au::detail::PrimeFactorization<463ul>::type}]'
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:3133:97:   required from 'struct au::detail::PrimeFactorization<1852ul>'
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:3119:65:   required by substitution of 'template<long unsigned int N> using PrimeFactorizationT = typename au::detail::PrimeFactorization::type [with long unsigned int N = 1852ul]'
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:3140:43:   required from 'constexpr auto au::mag() [with long unsigned int N = 1852ul]'
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:7384:55:   required from here
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:2960:5: error: static assertion failed: Prime<N> requires that N is prime
g++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
ASM generation compiler returned: 4
In file included from <source>:2:0:
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh: In static member function 'static constexpr au::detail::StringConstant<1ul> au::detail::SignIfPositiveIs<false>::value()':
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:560:57: error: could not convert '(const char*)"-"' from 'const char*' to 'au::detail::StringConstant<1ul>'
     static constexpr StringConstant<1> value() { return "-"; }
                                                         ^
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh: In function 'constexpr uintmax_t au::detail::find_prime_factor(uintmax_t)':
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:2854:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if (p * p > n) {
                   ^
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh: At global scope:
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:5600:90: error: 'constexpr' is not allowed in declaration of friend template specialization 'au::AlwaysDivisibleQuantity<U, R> unblock_int_div<U, R>(au::Quantity<U, R>)'
     friend constexpr AlwaysDivisibleQuantity<U, R> unblock_int_div<U, R>(Quantity<U, R> q);
                                                                                          ^
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:5601:87: error: 'constexpr' is not allowed in declaration of friend template specialization 'au::AlwaysDivisibleQuantity<au::UnitProduct<>, R> unblock_int_div<R>(R)'
     friend constexpr AlwaysDivisibleQuantity<UnitProductT<>, R> unblock_int_div<R>(R x);
                                                                                       ^
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh: In instantiation of 'struct au::Prime<11ul>':
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:2981:65:   required from 'struct au::detail::OrderByValue<au::Prime<7ul>, au::Prime<11ul> >'
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:2355:8:   required from 'struct au::LexicographicTotalOrdering<au::Prime<7ul>, au::Prime<11ul>, au::detail::OrderByValue>'
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:2985:8:   required from 'struct au::InOrderFor<au::Magnitude, au::Prime<7ul>, au::Prime<11ul> >'
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:2512:8:   required from 'struct au::PackProduct<au::Magnitude, au::Magnitude<au::Pow<au::Prime<7ul>, 1l> >, au::Magnitude<au::Prime<11ul> > >'
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:2179:90:   required by substitution of 'template<template<class ...> class Pack, class ... Ts> using PackProductT = au::detail::SimplifyBasePowersT<typename au::PackProduct<Pack, Ts>::type> [with Pack = au::Magnitude; Ts = {au::Magnitude<au::Pow<au::Prime<7ul>, 1l> >, au::Magnitude<au::Prime<11ul> >}]'
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:3133:97:   recursively required from 'struct au::detail::PrimeFactorization<77ul>'
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:3133:97:   required from 'struct au::detail::PrimeFactorization<231ul>'
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:3119:65:   required by substitution of 'template<long unsigned int N> using PrimeFactorizationT = typename au::detail::PrimeFactorization::type [with long unsigned int N = 231ul]'
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:3140:43:   required from 'constexpr auto au::mag() [with long unsigned int N = 231ul]'
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:7258:56:   required from here
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:2960:5: error: static assertion failed: Prime<N> requires that N is prime
     static_assert(detail::is_prime(N), "Prime<N> requires that N is prime");
     ^
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh: In instantiation of 'struct au::Prime<463ul>':
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:2981:65:   required from 'struct au::detail::OrderByValue<au::Prime<2ul>, au::Prime<463ul> >'
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:2355:8:   required from 'struct au::LexicographicTotalOrdering<au::Prime<2ul>, au::Prime<463ul>, au::detail::OrderByValue>'
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:2985:8:   required from 'struct au::InOrderFor<au::Magnitude, au::Prime<2ul>, au::Prime<463ul> >'
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:2512:8:   required from 'struct au::PackProduct<au::Magnitude, au::Magnitude<au::Pow<au::Prime<2ul>, 2l> >, au::Magnitude<au::Prime<463ul> > >'
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:2179:90:   required by substitution of 'template<template<class ...> class Pack, class ... Ts> using PackProductT = au::detail::SimplifyBasePowersT<typename au::PackProduct<Pack, Ts>::type> [with Pack = au::Magnitude; Ts = {au::Magnitude<au::Pow<au::Prime<2ul>, 2l> >, au::Magnitude<au::Prime<463ul> >}]'
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:2937:52:   required by substitution of 'template<class ... BPs> using MagProductT = au::PackProductT<au::Magnitude, BPs ...> [with BPs = {au::Magnitude<au::Pow<au::Prime<2ul>, 2l> >, au::detail::PrimeFactorization<463ul>::type}]'
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:3133:97:   required from 'struct au::detail::PrimeFactorization<1852ul>'
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:3119:65:   required by substitution of 'template<long unsigned int N> using PrimeFactorizationT = typename au::detail::PrimeFactorization::type [with long unsigned int N = 1852ul]'
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:3140:43:   required from 'constexpr auto au::mag() [with long unsigned int N = 1852ul]'
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:7384:55:   required from here
/app/aurora-opensource.github.io/au/0.4.0/au_all_units.hh:2960:5: error: static assertion failed: Prime<N> requires that N is prime
g++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
Execution build compiler returned: 4
Build failed

Examples on Goldbolt

Broken one using 0.4.0: https://godbolt.org/z/e3PcfefEx

Last working 0.3.5: https://godbolt.org/z/dd6cbn6a5

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions