forked from OSchip/llvm-project
ca68f3bc48
The following was found by a customer and is accepted by the other primary C++ compilers, but fails to compile in Clang: namespace sss { double foo(int, double); template <class T> T foo(T); // note: target of using declaration } // namespace sss namespace oad { void foo(); } namespace oad { using ::sss::foo; } namespace sss { using oad::foo; // note: using declaration } namespace sss { double foo(int, double) { return 0; } template <class T> T foo(T t) { // error: declaration conflicts with target of using return t; } } // namespace sss I believe the issue is that MergeFunctionDecl() was calling checkUsingShadowRedecl() but only considering a FunctionDecl as a possible shadow and not FunctionTemplateDecl. The changes in this patch largely mirror how variable declarations were being handled by also catching FunctionTemplateDecl. |
||
---|---|---|
.. | ||
basic | ||
dcl.dcl/dcl.module | ||
codegen-basics.cppm |