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

            Bug ID: 90910
           Summary: Missed namespace searching when operating on packed
                    fields
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: gcc at brej dot org
  Target Milestone: ---

Created attachment 46496
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=46496&action=edit
Overloading operators on a packed member reproducer

When overloading operators on a packed member, if the packing size is different
than the default size of the member, the namespace of the member is not
searched for the overloaded operator.

See attached example

Within a namespace NAMESPACE, a class CLASS formed with a packed enum ENUM.
When we apply an overloaded operator (in this case "<<"), the namespace of the
ENUM os not searched for the overloaded implementation. Instead the enum is
cast into an int and the int operator is used.
It is searched correctly is the class member is not packed, or if it is packed
to 32bits (cases a and c) as it does when using clang.

Reply via email to