http://llvm.org/bugs/show_bug.cgi?id=13785
             Bug #: 13785
           Summary: using-declarations versus default-arguments, and
                    nested-name-specifiers
           Product: clang
           Version: unspecified
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: C++
        AssignedTo: unassignedclangbugs at nondot.org
        ReportedBy: richard-llvm at metafoo.co.uk
                CC: dgregor at apple.com, llvmbugs at cs.uiuc.edu
    Classification: Unclassified
Clang rejects this:
  namespace A { int f(int a, int b = 0); }
  using A::f;
  namespace A { int f(int a = 0, int b); }
  int k = f();
... claiming that f requires at least one argument. It accepts this:
  namespace A { int f(int a, int b = 0); }
  using A::f;
  namespace A { int f(int a = 0, int b); }
  using A::f;
  int k = f();
... but then rejects this:
  namespace A { int f(int a, int b = 0); }
  using A::f;
  namespace A { int f(int a = 0, int b); }
  using A::f;
  int k = ::f();
We have the same story with default arguments for function templates. Rejected
(could not deduce 'a'):
  namespace A { template<int a, int b = 0> int f(); }
  using A::f;
  namespace A { template<int a = 0, int b> int f(); }
  int k = f<>();
Accepted:
  namespace A { template<int a, int b = 0> int f(); }
  using A::f;
  namespace A { template<int a = 0, int b> int f(); }
  using A::f;
  int k = f<>();
Rejected:
  namespace A { template<int a, int b = 0> int f(); }
  using A::f;
  namespace A { template<int a = 0, int b> int f(); }
  using A::f;
  int k = ::f<>();
Based on [namespace.udecl]p11, I think the first two results are correct
("Definitions added to the namespace after the using-declaration are not
considered when a use of the name is made.") but the third result in each set
seems to be incorrect.
-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.