https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84667

--- Comment #2 from Elmar Stellnberger <estellnb at elstel dot org> ---
Princess17b29a just found out that the problem can be resolved by adding the
const keyword to the constructor in line 233:
inline xstrbuf( const xstrbuf& s ) ...
... as neither "xstrbuf( base_str_const s )" nor "xstrbuf& operator = (
base_str_const s )" are used directly. An error message of clang has hinted us
to do so:

test_it.cpp:11:11: error: no viable constructor copying variable of type
'estrbuf' (aka 'xstrbuf<short>')
  estrbuf copybuf1 = varbuf4.as_const(); // copybuf.bufParams =
xstrbuf_constBuf;
          ^          ~~~~~~~~~~~~~~~~~~
./auxtypes.h:233:10: note: candidate constructor not viable: expects an l-value
for 1st argument
  inline xstrbuf( xstrbuf& s ) : base_str( s ) { bufParams = s.bufParams |
xstrbuf_bufUserAllocatedBit; };      // new xstrbuf then holds a temporary copy
of the initial xstrbuf
         ^
1 error generated.

Reply via email to