[Debian-med-packaging] Bug#925745: libgtextutils is marked for autoremoval from testing
Pierre Gruet
pgtdebian at free.fr
Tue Jul 28 21:43:12 BST 2020
Hello,
C++11 introduced references on rvalues, which basically allows to use a
non-constant reference on a temporary object (ie waiting for
affectation). Before, temporary objects could only be references by a
const reference.
Thus, from there, it becomes a problem to have two implicit conversion
operators defined in the class TextLineReader (text_line_reader.h):
operator const std::string& () const { return line_string() ; }
operator std::string() const { return line_string(); }
A call such that
TextLineReader r(...);
std::string str=r;
becomes ambiguous as the compiler could use the affectation operator of
std::string that take a const std::string& as input (thus calling the
first above operator) *or* the affectation operator of std::string that
takes a reference on a rvalue as input (thus calling the second above
operator, which returns a temporary object).
I suggest removing the second one. The first one is needed, for instance, in
const std::string& str=r;
which is non-ambiguous, whereas
std::string str=r;
and
std::string str(r);
are ambiguous and can work with either of the two implicit conversion
operators of TextLineReader.
I will prepare an upload.
Bye,
Pierre
More information about the Debian-med-packaging
mailing list