Blitz logo

Blitz Support :

From: psong_at_[hidden]
Date: 2005-04-22 16:39:18


Hello everyone,
   Today I installed the latest GNU compiler g++-4.0.0 on my linux box and
started to experiment it with my C++ programs. However, any program using
blitz++-0.8 refused to compile. I re-installed blitz++-0.8 using g++-4.0.0 as
the default C++ compiler ($./configure CXX=~/gcc-4.0.0/bin/g++) but the
problem persisted. For example, I tried to compile the following program

######################## start of program ##########################
   #include <iostream>
   #include <blitz/array.h>
   int main()
   {
     blitz::Array<int,2> a1(3,3);
     return 0;
   }
######################### end of program ############################

by doing
  $~/gcc-4.0.0/bin/g++ -c -Wall -I~/blitz-0.8 foo.cpp
I got the following error message:

########################### start of error message ########################
~/blitz-0.8/blitz/meta/product.h: In static member function ‘static typename
blitz::NumericTypeTraits<typename T_expr1::T_numtype>::T_sumtype
blitz::_bz_meta_vectorProduct<N, I>::f(const T_expr1&) [with T_expr1 =
blitz::TinyVector<int, 2>, int N = 2, int I = 0]’:
~/blitz-0.8/blitz/tvecglobs.h:68: instantiated from ‘typename
blitz::NumericTypeTraits<P_numtype>::T_sumtype blitz::product(const
blitz::TinyVector<P_numtype, N_length>&) [with T_numtype1 = int, int N_length
= 2]
~/blitz-0.8/blitz/array-impl.h:986: instantiated from ‘int blitz::Array<T,
N>::numElements() const [with P_numtype = int, int N_rank = 2]
~/blitz-0.8/blitz/array/methods.cc:254: instantiated from ‘void
blitz::Array<T, N>::setupStorage(int) [with P_numtype = int, int N_rank = 2]
~/blitz-0.8/blitz/array-impl.h:193: instantiated from ‘blitz::Array<T,
N>::Array(int, int, blitz::GeneralArrayStorage<N_rank>) [with P_numtype =
int, int N_rank = 2]
test_blitz.cpp:7: instantiated from here
~/blitz-0.8/blitz/meta/product.h:49: error: ‘blitz::_bz_meta_vectorProduct<2,
0>::<anonymous enum>’ is/uses anonymous type
~/blitz-0.8/blitz/meta/product.h:49: error: trying to instantiate
‘template<class T> T blitz::operator*(const T&, blitz::_bz_meta_nullOperand)
~/blitz-0.8/blitz/meta/product.h:49: error: ‘blitz::_bz_meta_vectorProduct<2,
0>::<anonymous enum>’ is/uses anonymous type
~/blitz-0.8/blitz/meta/product.h:49: error: trying to instantiate
‘template<class T> T blitz::operator*(const T&, blitz::_bz_meta_nullOperand)
~/blitz-0.8/blitz/meta/product.h: In static member function ‘static typename
blitz::NumericTypeTraits<typename T_expr1::T_numtype>::T_sumtype
blitz::_bz_meta_vectorProduct<N, I>::f(const T_expr1&) [with T_expr1 =
blitz::TinyVector<int, 2>, int N = 2, int I = 1]’:
~/blitz-0.8/blitz/meta/product.h:49: instantiated from ‘static typename
blitz::NumericTypeTraits<typename T_expr1::T_numtype>::T_sumtype
blitz::_bz_meta_vectorProduct<N, I>::f(const T_expr1&) [with T_expr1 =
blitz::TinyVector<int, 2>, int N = 2, int I = 0]
~/blitz-0.8/blitz/tvecglobs.h:68: instantiated from ‘typename
blitz::NumericTypeTraits<P_numtype>::T_sumtype blitz::product(const
blitz::TinyVector<P_numtype, N_length>&) [with T_numtype1 = int, int N_length
= 2]
~/blitz-0.8/blitz/array-impl.h:986: instantiated from ‘int blitz::Array<T,
N>::numElements() const [with P_numtype = int, int N_rank = 2]
~/blitz-0.8/blitz/array/methods.cc:254: instantiated from ‘void
blitz::Array<T, N>::setupStorage(int) [with P_numtype = int, int N_rank = 2]
~/blitz-0.8/blitz/array-impl.h:193: instantiated from ‘blitz::Array<T,
N>::Array(int, int, blitz::GeneralArrayStorage<N_rank>) [with P_numtype =
int, int N_rank = 2]
test_blitz.cpp:7: instantiated from here
~/blitz-0.8/blitz/meta/product.h:49: error: ‘blitz::_bz_meta_vectorProduct<2,
1>::<anonymous enum>’ is/uses anonymous type
~/blitz-0.8/blitz/meta/product.h:49: error: trying to instantiate
‘template<class T> T blitz::operator*(const T&, blitz::_bz_meta_nullOperand)
~/blitz-0.8/blitz/meta/product.h:49: error: ‘blitz::_bz_meta_vectorProduct<2,
1>::<anonymous enum>’ is/uses anonymous type
~/blitz-0.8/blitz/meta/product.h:49: error: trying to instantiate
‘template<class T> T blitz::operator*(const T&, blitz::_bz_meta_nullOperand)
make: *** [foo.o] Error 1
############################ end of error message #########################

Can anyone tell me why this happens and how can I fix it? Thanks!

Best Wishes,

Pengcheng Song