Overloading fails when reference parameters are involved
|Created on||Jul 28, 2009 10:50|
|Resolved on||Aug 10, 2009 19:32|
One would like to use the following overloading of functions in the stdlib's FibreIO module: double[*] FibreScanDoubleArray( File &stream); double[*] FibreScanDoubleArray( TermFile &stream); double[*] FibreScanDoubleArray( string stream); double[*] FibreScanDoubleArray() However, we get: > ABORT: line 72 file: FibreIO.sac > ABORT: Trying to overload function "FibreIO::FibreScanDoubleArray" that > ABORT: expects 1 argument(s) and 1 return value(s) with a version that has > ABORT: a signature differing in the number or position of reference args > ABORT: only. The instances do differ in the number of reference parameters, indeed, and I do recall that there are some limitations in the implementation. Apart from the fact that this is rather unfortunate, I don't think the error message is spot on: There's also the string argument in the 3rd instance that the others lack. I think it should be possible to distinguish the cases even at an early stage in the compilation.
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information