[Bug c++/68942] New: overly strict use of deleted function before argument-dependent lookup (ADL)
lucdanton at free dot fr
gcc-bugzilla@gcc.gnu.org
Wed Dec 16 16:58:00 GMT 2015
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68942
Bug ID: 68942
Summary: overly strict use of deleted function before
argument-dependent lookup (ADL)
Product: gcc
Version: 5.2.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: lucdanton at free dot fr
Target Milestone: ---
Tested on 5.2.0, 5.2.1 and 6.
I believe the testcase is incorrectly rejected. Clang accepts the program. Note
that leaving void foo(int); undefined, rather than defined as deleted, lets GCC
accept the program.
$ g++-trunk -std=c++14 main.cpp
main.cpp: In function 'void lookup(X)':
main.cpp:5:3: error: use of deleted function 'void foo(int)'
{ foo(x); }
^~~
main.cpp:1:6: note: declared here
void foo(int) = delete;
^~~
$ cat main.cpp
void foo(int) = delete;
template<typename X>
void lookup(X x)
{ foo(x); }
namespace ns {
struct dummy {};
int foo(dummy) { return 3; }
} // ns
int main()
{
lookup(ns::dummy {});
}
More information about the Gcc-bugs
mailing list