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_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT,
_Traits>:
perator<<(std::basic_ostream<_CharT, _Traits>&
(*)(std::basic_ostream<_CharT, _Traits>&)) [with _CharT = char, _Traits
= std::char_traits<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/bits/ostream.tcc:78:
note: std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT, _Traits>:
perator<<(std::basic_ios<_CharT,
_Traits>& (*)(std::basic_ios<_CharT, _Traits>&)) [with _CharT = char,
_Traits = std::char_traits<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/bits/ostream.tcc:90:
note: std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT, _Traits>:
perator<<(std::ios_base&
(*)(std::ios_base&)) [with _CharT = char, _Traits =
std::char_traits<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/bits/ostream.tcc:125:
note: std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT, _Traits>:
perator<<(long int) [with _CharT
= char, _Traits = std::char_traits<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/bits/ostream.tcc:159:
note: std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT, _Traits>:
perator<<(long unsigned int)
[with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/bits/ostream.tcc:102:
note: std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT, _Traits>:
perator<<(bool) [with _CharT =
char, _Traits = std::char_traits<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/ostream:176:
note: std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT, _Traits>:
perator<<(short int) [with _CharT
= char, _Traits = std::char_traits<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/ostream:187:
note: std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT, _Traits>:
perator<<(short unsigned int)
[with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/ostream:191:
note: std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT, _Traits>:
perator<<(int) [with _CharT =
char, _Traits = std::char_traits<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/ostream:202:
note: std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT, _Traits>:
perator<<(unsigned int) [with
_CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/bits/ostream.tcc:183:
note: std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT, _Traits>:
perator<<(long long int) [with
_CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/bits/ostream.tcc:218:
note: std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT, _Traits>:
perator<<(long long unsigned int)
[with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/bits/ostream.tcc:242:
note: std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT, _Traits>:
perator<<(double) [with _CharT =
char, _Traits = std::char_traits<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/ostream:217:
note: std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT, _Traits>:
perator<<(float) [with _CharT =
char, _Traits = std::char_traits<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/bits/ostream.tcc:265:
note: std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT, _Traits>:
perator<<(long double) [with
_CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/bits/ostream.tcc:288:
note: std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT, _Traits>:
perator<<(const void*) [with
_CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/bits/ostream.tcc:311:
note: std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT,
_Traits>:
perator<<(std::basic_streambuf<_CharT, _Traits>*) [with
_CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/ostream:502:
note: std::basic_ostream<char, _Traits>&
std:
perator<<(std::basic_ostream<char, _Traits>&, const unsigned
char*) [with _Traits = std::char_traits<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/ostream:497:
note: std::basic_ostream<char, _Traits>&
std:
perator<<(std::basic_ostream<char, _Traits>&, const signed char*)
[with _Traits = std::char_traits<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/bits/ostream.tcc:616:
note: std::basic_ostream<char, _Traits>&
std:
perator<<(std::basic_ostream<char, _Traits>&, const char*) [with
_Traits = std::char_traits<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/bits/ostream.tcc:571:
note: std::basic_ostream<_CharT, _Traits>&
std:
perator<<(std::basic_ostream<_CharT, _Traits>&, const char*)
[with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/ostream:463:
note: std::basic_ostream<char, _Traits>&
std:
perator<<(std::basic_ostream<char, _Traits>&, unsigned char)
[with _Traits = std::char_traits<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/ostream:458:
note: std::basic_ostream<char, _Traits>&
std:
perator<<(std::basic_ostream<char, _Traits>&, signed char) [with
_Traits = std::char_traits<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/bits/ostream.tcc:509:
note: std::basic_ostream<char, _Traits>&
std:
perator<<(std::basic_ostream<char, _Traits>&, char) [with _Traits
= std::char_traits<char>]
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/ostream:447:
note: std::basic_ostream<_CharT, _Traits>&
std:
perator<<(std::basic_ostream<_CharT, _Traits>&, char) [with
_CharT = char, _Traits = std::char_traits<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::__normal_iterator<float*,
_Function = said:
.../Utils.h:41: instantiated from 'void printList(T&) [with T =
std::vector<float, std::allocator<float> >]'
.../BlockList.cpp:444: 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:
ointer_to_unary_function<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:
ointer_to_unary_function<_Arg,
_Result>:
perator()(_Arg) const [with _Arg = std::vector<float,
std::allocator<float> >, _Result = void]