[EMAIL PROTECTED] (John Pye) writes:
> // only defined for unitless types
template <> // missing, required:
// units.h:104: error: explicit specialization of
// `Units<0, 0, 0, 0, 0>::operator double() const' must be
introduced by `template <>'
> inline Units<0,0,0,0,0>::operator double() const {
> return d_val;
> }
FWIW, your code compiles cleanly with gcc-3.2, 3.4.0, 3.4.3 and
(after the fix above) gcc-4.0-20040919.
It does not however link with any of them:
/tmp/ccONzY0L.o: In function `main':
/tmp/ccONzY0L.o(.text+0x62): undefined reference to `Units<0, 0, 0, 1,
0>::operator double() const'
> I would like to get some more information from the compiler about
> where this call is coming from, rather than just where the definition
> is lacking.
Well, the message above says the call is coming from 'main()',
and it is quite clear that it is coming from this line:
double upsilon = T + 13.5 / (T - 23.5);
which can be alternatively written as (and is translated by the
compiler as):
double upsilon = (double)T + (13.5 / ((double)T - 23.5)); // or
double upsilon = T.operator double() + (13.5 / (T.operator double() -
23.5));
Cheers,
--
In order to understand recursion you must first understand recursion.
Remove /-nsp/ for email.
_______________________________________________
Help-gplusplus mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/help-gplusplus