Thank you for your suggestion.
I change to this:
template <typename T>
void Print(T item) {
std::cout << item << " ";
}
template <typename T>
void printList(T& list) {
for_each( list.begin(), list.end(), ptr_fun(Print<T >));
}
And in my code, I call pritnList like this:
vector<float> a;
a.push_back(1.2 );
a.push_back(3.2 );
printList(a);
And I have these compile errors:
.../Utils.h:35: error: no match for 'operator<<' in 'std::cout <<
item'
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/bits/ostream.tcc:67:
note: candidates are: std::basic_ostr eam<_CharT, _Traits>&
std::basic_ostr eam<_CharT,
_Traits>::opera tor<<(std::basi c_ostream<_Char T, _Traits>&
(*)(std::basic_ ostream<_CharT, _Traits>&)) [with _CharT = char, _Traits
= std::char_trait s<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/bits/ostream.tcc:78:
note: std::basic_ostr eam<_CharT, _Traits>&
std::basic_ostr eam<_CharT, _Traits>::opera tor<<(std::basi c_ios<_CharT,
_Traits>& (*)(std::basic_ ios<_CharT, _Traits>&)) [with _CharT = char,
_Traits = std::char_trait s<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/bits/ostream.tcc:90:
note: std::basic_ostr eam<_CharT, _Traits>&
std::basic_ostr eam<_CharT, _Traits>::opera tor<<(std::ios_ base&
(*)(std::ios_ba se&)) [with _CharT = char, _Traits =
std::char_trait s<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/bits/ostream.tcc:125 :
note: std::basic_ostr eam<_CharT, _Traits>&
std::basic_ostr eam<_CharT, _Traits>::opera tor<<(long int) [with _CharT
= char, _Traits = std::char_trait s<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/bits/ostream.tcc:159 :
note: std::basic_ostr eam<_CharT, _Traits>&
std::basic_ostr eam<_CharT, _Traits>::opera tor<<(long unsigned int)
[with _CharT = char, _Traits = std::char_trait s<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/bits/ostream.tcc:102 :
note: std::basic_ostr eam<_CharT, _Traits>&
std::basic_ostr eam<_CharT, _Traits>::opera tor<<(bool) [with _CharT =
char, _Traits = std::char_trait s<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/ostream:176:
note: std::basic_ostr eam<_CharT, _Traits>&
std::basic_ostr eam<_CharT, _Traits>::opera tor<<(short int) [with _CharT
= char, _Traits = std::char_trait s<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/ostream:187:
note: std::basic_ostr eam<_CharT, _Traits>&
std::basic_ostr eam<_CharT, _Traits>::opera tor<<(short unsigned int)
[with _CharT = char, _Traits = std::char_trait s<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/ostream:191:
note: std::basic_ostr eam<_CharT, _Traits>&
std::basic_ostr eam<_CharT, _Traits>::opera tor<<(int) [with _CharT =
char, _Traits = std::char_trait s<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/ostream:202:
note: std::basic_ostr eam<_CharT, _Traits>&
std::basic_ostr eam<_CharT, _Traits>::opera tor<<(unsigned int) [with
_CharT = char, _Traits = std::char_trait s<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/bits/ostream.tcc:183 :
note: std::basic_ostr eam<_CharT, _Traits>&
std::basic_ostr eam<_CharT, _Traits>::opera tor<<(long long int) [with
_CharT = char, _Traits = std::char_trait s<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/bits/ostream.tcc:218 :
note: std::basic_ostr eam<_CharT, _Traits>&
std::basic_ostr eam<_CharT, _Traits>::opera tor<<(long long unsigned int)
[with _CharT = char, _Traits = std::char_trait s<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/bits/ostream.tcc:242 :
note: std::basic_ostr eam<_CharT, _Traits>&
std::basic_ostr eam<_CharT, _Traits>::opera tor<<(double) [with _CharT =
char, _Traits = std::char_trait s<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/ostream:217:
note: std::basic_ostr eam<_CharT, _Traits>&
std::basic_ostr eam<_CharT, _Traits>::opera tor<<(float) [with _CharT =
char, _Traits = std::char_trait s<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/bits/ostream.tcc:265 :
note: std::basic_ostr eam<_CharT, _Traits>&
std::basic_ostr eam<_CharT, _Traits>::opera tor<<(long double) [with
_CharT = char, _Traits = std::char_trait s<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/bits/ostream.tcc:288 :
note: std::basic_ostr eam<_CharT, _Traits>&
std::basic_ostr eam<_CharT, _Traits>::opera tor<<(const void*) [with
_CharT = char, _Traits = std::char_trait s<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/bits/ostream.tcc:311 :
note: std::basic_ostr eam<_CharT, _Traits>&
std::basic_ostr eam<_CharT,
_Traits>::opera tor<<(std::basi c_streambuf<_Ch arT, _Traits>*) [with
_CharT = char, _Traits = std::char_trait s<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/ostream:502:
note: std::basic_ostr eam<char, _Traits>&
std::operator<< (std::basic_ost ream<char, _Traits>&, const unsigned
char*) [with _Traits = std::char_trait s<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/ostream:497:
note: std::basic_ostr eam<char, _Traits>&
std::operator<< (std::basic_ost ream<char, _Traits>&, const signed char*)
[with _Traits = std::char_trait s<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/bits/ostream.tcc:616 :
note: std::basic_ostr eam<char, _Traits>&
std::operator<< (std::basic_ost ream<char, _Traits>&, const char*) [with
_Traits = std::char_trait s<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/bits/ostream.tcc:571 :
note: std::basic_ostr eam<_CharT, _Traits>&
std::operator<< (std::basic_ost ream<_CharT, _Traits>&, const char*)
[with _CharT = char, _Traits = std::char_trait s<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/ostream:463:
note: std::basic_ostr eam<char, _Traits>&
std::operator<< (std::basic_ost ream<char, _Traits>&, unsigned char)
[with _Traits = std::char_trait s<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/ostream:458:
note: std::basic_ostr eam<char, _Traits>&
std::operator<< (std::basic_ost ream<char, _Traits>&, signed char) [with
_Traits = std::char_trait s<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/bits/ostream.tcc:509 :
note: std::basic_ostr eam<char, _Traits>&
std::operator<< (std::basic_ost ream<char, _Traits>&, char) [with _Traits
= std::char_trait s<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/ostream:447:
note: std::basic_ostr eam<_CharT, _Traits>&
std::operator<< (std::basic_ost ream<_CharT, _Traits>&, char) [with
_CharT = char, _Traits = std::char_trait s<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/bits/stl_algo.h:
In function '_Function std::for_each(_ InputIterator, _InputIterator,
_Function) [with _InputIterator = __gnu_cxx::__no rmal_iterator<f loat*,
std::vector<flo at, std::allocator< float> > >, _Function =
std::pointer_to _unary_function <std::vector<fl oat, std::allocator< float>
, void>]':
.../Utils.h:41: instantiated from 'void printList(T&) [with T =
std::vector<flo at, std::allocator< float> >]'
.../BlockList.cpp:4 44: instantiated from here
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/bits/stl_algo.h:158:
error: no match for call to
'(std::pointer_ to_unary_functi on<std::vector< float,
std::allocator< float> >, void>) (float&)'
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/bits/stl_function.h: 493:
note: candidates are: _Result std::pointer_to _unary_function <_Arg,
_Result>::opera tor()(_Arg) const [with _Arg = std::vector<flo at,
std::allocator< float> >, _Result = void]