https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78656
Bug ID: 78656 Summary: Fix-it suggestion for std::alocator doesn't include std::allocator Product: gcc Version: 7.0 Status: UNCONFIRMED Keywords: diagnostic Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: redi at gcc dot gnu.org CC: dmalcolm at gcc dot gnu.org Target Milestone: --- This typo for std::allocator gets a poor suggestion: #include <memory> void* allocate(std::size_t n) { return std::allocate<char>().allocate(n); } bad-fixit.cc: In function ‘void* allocate(std::size_t)’: bad-fixit.cc:3:40: error: ‘allocate’ is not a member of ‘std’ void* allocate(std::size_t n) { return std::allocate<char>().allocate(n); } ^~~ bad-fixit.cc:3:40: note: suggested alternative: bad-fixit.cc:3:7: note: ‘allocate’ void* allocate(std::size_t n) { return std::allocate<char>().allocate(n); } ^~~~~~~~ bad-fixit.cc:3:54: error: expected primary-expression before ‘char’ void* allocate(std::size_t n) { return std::allocate<char>().allocate(n); } ^~~~ bad-fixit.cc:3:54: error: expected ‘;’ before ‘char’ bad-fixit.cc:3:58: error: expected unqualified-id before ‘>’ token void* allocate(std::size_t n) { return std::allocate<char>().allocate(n); } ^ Even std::allocato or std::allocator or std::alocator doesn't get a good suggestion, it still suggests changing "std" to "allocate" (which would give "allocate::allocate") It seems that qualification with namespaces isn't really supported properly.