aboutsummaryrefslogtreecommitdiff
path: root/gcc/value-range.h
diff options
context:
space:
mode:
authorMarek Polacek <polacek@redhat.com>2023-03-17 18:25:13 -0400
committerMarek Polacek <polacek@redhat.com>2023-03-20 16:54:11 -0400
commita226590fefb35ed66adf73d85cefe49048a78ab8 (patch)
treee28402d0be762f0e62247b7c5978b0f4de753961 /gcc/value-range.h
parent0a846340b99675d57fc2f2923a0412134eed09d3 (diff)
downloadgcc-a226590fefb35ed66adf73d85cefe49048a78ab8.zip
gcc-a226590fefb35ed66adf73d85cefe49048a78ab8.tar.gz
gcc-a226590fefb35ed66adf73d85cefe49048a78ab8.tar.bz2
c++: explicit ctor and list-initialization [PR109159]
When I implemented explicit(bool) in r9-3735, I added this code to add_template_candidate_real: + /* Now the explicit specifier might have been deduced; check if this + declaration is explicit. If it is and we're ignoring non-converting + constructors, don't add this function to the set of candidates. */ + if ((flags & LOOKUP_ONLYCONVERTING) && DECL_NONCONVERTING_P (fn)) + return NULL; but as this test demonstrates, that's incorrect when we're initializing from a {}: for list-initialization we consider explicit constructors and complain if one is chosen. PR c++/109159 gcc/cp/ChangeLog: * call.cc (add_template_candidate_real): Add explicit decls to the set of candidates when the initializer is a braced-init-list. libstdc++-v3/ChangeLog: * testsuite/20_util/pair/cons/explicit_construct.cc: Adjust dg-error. * testsuite/20_util/tuple/cons/explicit_construct.cc: Likewise. * testsuite/23_containers/span/explicit.cc: Likewise. gcc/testsuite/ChangeLog: * g++.dg/cpp0x/explicit16.C: New test.
Diffstat (limited to 'gcc/value-range.h')
0 files changed, 0 insertions, 0 deletions