Ha, it is interesting that the three major compilers all behave differently. As you described, GCC accepts one program and rejects the other. Clang accepts both. MSVC rejects both, with error messages like "C2884: 'g': introduced by using-declaration conflicts with local function 'g'".

On Tue, 13 Apr 2021 at 04:59, Vladimir Grigoriev via Std-Discussion <std-discussion@lists.isocpp.org> wrote:
The following program compiled with gcc 9.3
 
#include <iostream>
 
void g( int x, int y = 20 )
{
    std::cout << "x = " << x << ", y = " << y << '\n';
}
 
int main() 
{
    void g( int, int );
    using ::g;
//    void g( int, int );    
    g( 10 );
    
    return 0;
}
 
issues error message
 
error: too few arguments to function ‘void g(int, int)’
  g( 10 );
        ^
 
However this program
 
#include <iostream>
 
void g( int x, int y = 20 )
{
    std::cout << "x = " << x << ", y = " << y << '\n';
}
 
int main() 
{
//    void g( int, int );
    using ::g;
    void g( int, int );    
    g( 10 );
    
    return 0;
}
 
runs successfully.
 
I did not found in the section 9.9 The using declaration whether such a program is ill-formed or not.
 
The only text in the C++ 20 Standard  that seems refers to this case is the quote in the section 12.2 Overloadable declarations
 
1 Not all function declarations can be overloaded. Those that cannot be overloaded are specified here. A program is ill-formed if it contains two such non-overloadable declarations in the same scope. [Note: This restriction applies to explicit declarations in a scope, and between such declarations and declarations made through a using-declaration (9.9). It does not apply to sets of functions fabricated as a result of name lookup (e.g., because of using-directives) or overload resolution (e.g., for operator functions). — end note]
 
Though the bold text is not clear enough and whether it indeed refers to the pointed case.
 
So a question arises are the both above programs ill-formed? And if so then why is there nothing said about this in the section  9.9 if I am not mistaken?
 
With best regards
(Vlad from Moscow)
 
 
--
Std-Discussion mailing list
Std-Discussion@lists.isocpp.org
https://lists.isocpp.org/mailman/listinfo.cgi/std-discussion


--
Yongwei Wu
URL: http://wyw.dcweb.cn/