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

            Bug ID: 84589
           Summary: Failure to diagnose conflicting declaration of struct
           Product: gcc
           Version: 8.0
            Status: UNCONFIRMED
          Keywords: accepts-invalid
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: redi at gcc dot gnu.org
  Target Milestone: ---

void stat(struct stat*) { }

namespace ns
{
  using ::stat;
  struct stat { };
}


This should be ill-formed, because the function declaration also adds "struct
stat" to the global namespace, so the using-declaration adds that to ns, and
defining struct ns::stat should conflict.


Clang says:

using.cc:6:3: error: declaration conflicts with target of using declaration
already in scope
  struct stat { };
  ^
using.cc:1:18: note: target of using declaration
void stat(struct stat*) { }
                 ^
using.cc:5:11: note: using declaration
  using ::stat;
          ^
1 error generated.


and EDG says:

"using.cc", line 6: error: class "stat" cannot be defined in the current scope
    struct stat { };
           ^

1 error detected in the compilation of "using.cc".

Reply via email to