URL: <https://savannah.gnu.org/bugs/?64486>
Summary: node.cpp: "if (*p == spec)" said to be ambiguous (C++20) Group: GNU roff Submitter: bjarniig Submitted: Fri 28 Jul 2023 10:47:02 PM UTC Category: Core Severity: 3 - Normal Item Group: Warning/Suspicious behaviour Status: None Privacy: Public Assigned to: None Open/Closed: Open Discussion Lock: Any Planned Release: None _______________________________________________________ Follow-up Comments: ------------------------------------------------------- Date: Fri 28 Jul 2023 10:47:02 PM UTC By: Bjarni Ingi Gislason <bjarniig> Subject: node.cpp: "if (*p == spec)" said to be ambiguous (C++20) File: src/roff/troff/node.cpp g++ (Debian 13.1.0-9) 13.1.0 [Debian trixie] CXX src/roff/troff/node.o ../src/roff/troff/node.cpp: In copy constructor 'tfont_spec::tfont_spec(const tfont_spec&)': ../src/roff/troff/node.cpp:192:48: warning: implicitly-declared 'constexpr tfont_spec& tfont_spec::operator=(const tfont_spec&)' is deprecated [-Wdeprecated-copy] 192 | tfont_spec(const tfont_spec &spec) { *this = spec; } | ^~~~ ../src/roff/troff/node.cpp:192:3: note: because 'tfont_spec' has user-provided 'tfont_spec::tfont_spec(const tfont_spec&)' 192 | tfont_spec(const tfont_spec &spec) { *this = spec; } | ^~~~~~~~~~ ../src/roff/troff/node.cpp: In function 'tfont* make_tfont(tfont_spec&)': ../src/roff/troff/node.cpp:277:15: warning: C++20 says that these are ambiguous, even though the second is reversed: 277 | if (*p == spec) | ^~~~ ../src/roff/troff/node.cpp:194:7: note: candidate 1: 'int tfont_spec::operator==(const tfont_spec&)' 194 | int operator==(const tfont_spec &); | ^~~~~~~~ ../src/roff/troff/node.cpp:194:7: note: candidate 2: 'int tfont_spec::operator==(const tfont_spec&)' (reversed) ../src/roff/troff/node.cpp:194:7: note: try making the operator a 'const' member function ../src/roff/troff/node.cpp: In constructor 'tfont::tfont(tfont_spec&)': ../src/roff/troff/node.cpp:713:15: warning: C++20 says that these are ambiguous, even though the second is reversed: 713 | if (*p == plain_spec) { | ^~~~~~~~~~ ../src/roff/troff/node.cpp:493:5: note: candidate 1: 'int tfont_spec::operator==(const tfont_spec&)' 493 | int tfont_spec::operator==(const tfont_spec &spec) | ^~~~~~~~~~ ../src/roff/troff/node.cpp:493:5: note: candidate 2: 'int tfont_spec::operator==(const tfont_spec&)' (reversed) ../src/roff/troff/node.cpp:493:5: note: try making the operator a 'const' member function CXX src/roff/troff/number.o CXX src/roff/troff/reg.o _______________________________________________________ Reply to this item at: <https://savannah.gnu.org/bugs/?64486> _______________________________________________ Message sent via Savannah https://savannah.gnu.org/