"No matching function" -- not finding copy constructor
Joe Buck
Joe.Buck@synopsys.COM
Tue May 17 16:47:00 GMT 2005
On Tue, May 17, 2005 at 12:00:59PM -0400, Paul Koning wrote:
> I'm upgrading to V4.0.0 and struggling with some code that's seriously
> into templates. One puzzling error is this one:
>
> keyed_obj.hh:159: error: no matching function for call to 'CxnIndex::CxnIndex(CxnIndex)'
> Indeces.hh:150: note: candidates are: CxnIndex::CxnIndex(CxnIndex&)
> Indeces.hh:145: note: ... and some more
>
> It's not entirely clear to me why something very much like a copy
> constructor is being invoked in the first place. But the bigger
> puzzle is: why isn't the copy constructor being matched? I would have
> thought that any call with a T argument should match a function or
> method with an &T argument in its declaration...
CxnIndex::CxnIndex(CxnIndex&) is not a general copy constructor. Notice
the non-const reference. The error message is saying that it's trying
to pass a temporary to a copy constructor. You would need
CxnIndex::CxnIndex(const CxnIndex&)
to match that. As for why you need a copy constructor, we'd have to
see the code for that, but this list isn't really the right place for
helping you debug this problem further.
More information about the Gcc
mailing list