Public bug reported:

template<typename T>
concept bool Addable = requires (T x, T y) {
    { x + y } -> T;
    { x += y } -> T&;
};

template<typename T>
concept bool SSemiring = requires(typename T::element_t& a, typename 
T::element_t& b, const Addable* vptr) {

    { a + b } -> typename T::element_t;
    { a * b } -> typename T::element_t;

    { T::zero() } -> typename T::element_t;
    { T::one() } -> typename T::element_t;

    { typename T::element_t{vptr} };

};

produces:
gcc_bug.hpp:10:93: internal compiler error: in 
synthesize_implicit_template_parm, at cp/parser.c:39065
 concept bool SSemiring = requires(typename T::element_t& a, typename 
T::element_t& b, const Addable* vptr) {
                                                                                
             ^~~~~~~

** Affects: gcc-8 (Ubuntu)
     Importance: Undecided
         Status: New


** Tags: concepts

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1831222

Title:
  Concept declaration requiring another concept fails

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/gcc-8/+bug/1831222/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to