https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80144

            Bug ID: 80144
           Summary: Concept introduced with "template<OtherConcept T>" is
                    not diagnosed
           Product: gcc
           Version: c++-concepts
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: arthur.j.odwyer at gmail dot com
  Target Milestone: ---

Compile this code with GCC trunk and -fconcepts:

template<typename T>
concept bool Never = requires(T t) {
    { t != 42 };
};

template<typename T> concept bool First = Never<T>;
template<Never T> concept bool Second = true;

int main()
{
    static_assert(!Never<void*>);
    static_assert(!First<void*>);
    static_assert(!Second<void*>);  // static assertion failed
}

I claim that the final static_assert should not fail, or else GCC should
diagnose some kind of syntax error in my concept definitions (perhaps the
syntax "Never T" is not intended to be supported).

Reply via email to