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

            Bug ID: 79592
           Summary: incomplete diagnostic "is not usable as a constexpr
                    function because:"
           Product: gcc
           Version: 6.3.1
            Status: UNCONFIRMED
          Keywords: diagnostic
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: redi at gcc dot gnu.org
  Target Milestone: ---

struct pthread_mutex {
  void *m_ptr;
};

struct M {
  pthread_mutex m = { ((void *) 1LL) };
};

constexpr M m;

pt.cc:9:13: error: ‘constexpr M::M()’ called in a constant expression
 constexpr M m;
             ^
pt.cc:5:8: note: ‘constexpr M::M()’ is not usable as a constexpr function
because:
 struct M {
        ^

It just says "because:" without saying what the problem is (the cast is not
allowed in a constant expression).

If the expression is (void*)1 rather than (void*)1LL then it is incorrectly
accepted.

Reply via email to