Compilation Issues With Sun Studio 11
Brian Schubert
schubert at rutgers.edu
Tue Jul 29 10:38:16 CDT 2008
Hello,
I'm having problems compiling Octave 3.0.1 using Sun Studio 11 on
Solaris 9. My current problem is with ov-intx.h:
CC -c -I/usr/local/include -I/usr/local/include/readline
-I/usr/local/include/ncurses -I/usr/local/include -KPIC -I. -I..
-I../liboctave -I../src -I../libcruft/misc -DHAVE_CONFIG_H -g
bitfcns.cc -o pic/bitfcns.o
Results in:
"ov-intx.h", line 291: Error: Overloading ambiguity between
"octave_int<char>::octave_int<octave_int<unsigned long
long>>(octave_int<unsigned long long>)" and
"octave_int<char>::octave_int<unsigned long long>(const
octave_int<unsigned long long>&)".
"ov-intx.h", line 291: Error: Overloading ambiguity between
"octave_int<char>::octave_int<octave_int<unsigned long
long>>(octave_int<unsigned long long>)" and
"octave_int<char>::octave_int<unsigned long long>(const
octave_int<unsigned long long>&)".
"ov-intx.h", line 291: Error: Cannot cast from const octave_int<unsigned
long long> to octave_int<char>.
"ov-intx.h", line 294: Error: Overloading ambiguity between
"octave_int<short>::octave_int<octave_int<unsigned long
long>>(octave_int<unsigned long long>)" and
"octave_int<short>::octave_int<unsigned long long>(const
octave_int<unsigned long long>&)".
"ov-intx.h", line 294: Error: Overloading ambiguity between
"octave_int<short>::octave_int<octave_int<unsigned long
long>>(octave_int<unsigned long long>)" and
"octave_int<short>::octave_int<unsigned long long>(const
octave_int<unsigned long long>&)".
"ov-intx.h", line 294: Error: Cannot cast from const octave_int<unsigned
long long> to octave_int<short>.
"ov-intx.h", line 297: Error: Overloading ambiguity between
"octave_int<int>::octave_int<octave_int<unsigned long
long>>(octave_int<unsigned long long>)" and
"octave_int<int>::octave_int<unsigned long long>(const
octave_int<unsigned long long>&)".
"ov-intx.h", line 297: Error: Overloading ambiguity between
"octave_int<int>::octave_int<octave_int<unsigned long
long>>(octave_int<unsigned long long>)" and
"octave_int<int>::octave_int<unsigned long long>(const
octave_int<unsigned long long>&)".
"ov-intx.h", line 297: Error: Cannot cast from const octave_int<unsigned
long long> to octave_int<int>.
"ov-intx.h", line 300: Error: Overloading ambiguity between
"octave_int<long long>::octave_int<octave_int<unsigned long
long>>(octave_int<unsigned long long>)" and "octave_int<long
long>::octave_int<unsigned long long>(const octave_int<unsigned long
long>&)".
"ov-intx.h", line 300: Error: Overloading ambiguity between
"octave_int<long long>::octave_int<octave_int<unsigned long
long>>(octave_int<unsigned long long>)" and "octave_int<long
long>::octave_int<unsigned long long>(const octave_int<unsigned long
long>&)".
"ov-intx.h", line 300: Error: Cannot cast from const octave_int<unsigned
long long> to octave_int<long long>.
"ov-intx.h", line 303: Error: Overloading ambiguity between
"octave_int<unsigned char>::octave_int<octave_int<unsigned long
long>>(octave_int<unsigned long long>)" and "octave_int<unsigned
char>::octave_int<unsigned long long>(const octave_int<unsigned long
long>&)".
"ov-intx.h", line 303: Error: Overloading ambiguity between
"octave_int<unsigned char>::octave_int<octave_int<unsigned long
long>>(octave_int<unsigned long long>)" and "octave_int<unsigned
char>::octave_int<unsigned long long>(const octave_int<unsigned long
long>&)".
"ov-intx.h", line 303: Error: Cannot cast from const octave_int<unsigned
long long> to octave_int<unsigned char>.
"ov-intx.h", line 306: Error: Overloading ambiguity between
"octave_int<unsigned short>::octave_int<octave_int<unsigned long
long>>(octave_int<unsigned long long>)" and "octave_int<unsigned
short>::octave_int<unsigned long long>(const octave_int<unsigned long
long>&)".
"ov-intx.h", line 306: Error: Overloading ambiguity between
"octave_int<unsigned short>::octave_int<octave_int<unsigned long
long>>(octave_int<unsigned long long>)" and "octave_int<unsigned
short>::octave_int<unsigned long long>(const octave_int<unsigned long
long>&)".
"ov-intx.h", line 306: Error: Cannot cast from const octave_int<unsigned
long long> to octave_int<unsigned short>.
"ov-intx.h", line 309: Error: Overloading ambiguity between
"octave_int<unsigned>::octave_int<octave_int<unsigned long
long>>(octave_int<unsigned long long>)" and
"octave_int<unsigned>::octave_int<unsigned long long>(const
octave_int<unsigned long long>&)".
"ov-intx.h", line 309: Error: Overloading ambiguity between
"octave_int<unsigned>::octave_int<octave_int<unsigned long
long>>(octave_int<unsigned long long>)" and
"octave_int<unsigned>::octave_int<unsigned long long>(const
octave_int<unsigned long long>&)".
"ov-intx.h", line 309: Error: Cannot cast from const octave_int<unsigned
long long> to octave_int<unsigned>.
"ov-intx.h", line 316: Error: Could not find a match for
intNDArray<octave_int<char>>::intNDArray(dim_vector, const
octave_int<unsigned long long>) needed in
octave_uint64_scalar::int8_array_value() const.
"ov-intx.h", line 320: Error: Could not find a match for
intNDArray<octave_int<short>>::intNDArray(dim_vector, const
octave_int<unsigned long long>) needed in
octave_uint64_scalar::int16_array_value() const.
"ov-intx.h", line 324: Error: Could not find a match for
intNDArray<octave_int<int>>::intNDArray(dim_vector, const
octave_int<unsigned long long>) needed in
octave_uint64_scalar::int32_array_value() const.
"ov-intx.h", line 328: Error: Could not find a match for
intNDArray<octave_int<long long>>::intNDArray(dim_vector, const
octave_int<unsigned long long>) needed in
octave_uint64_scalar::int64_array_value() const.
Compilation aborted, too many Error messages.
It seems to me that the compiler cannot determine what type "scalar" is
and thus cannot determine the proper function to use. As an experiment,
I cast "scalar" to a "double" on all the lines that produced the errors
and compilation actually succeeded, so it seems that my theory is likely
at lest partially correct (I know very little about C++, however).
Anyway, I would be grateful if anyone could suggest to me a more proper
way with which I may avoid these errors.
Thanks,
-Brian Schubert
More information about the Bug-octave
mailing list