65,186
社区成员




#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
template <typename elementType>
struct DisplayElement
{
int a;
DisplayElement(int _a):a(_a)
{
}
void operator () (const elementType& element) const
{
cout << a<<":"<<element << endl;
}
};
int main(int argc, char *argv[])
{
vector<int> vecIntegers;
vecIntegers.resize(10);
for_each ( vecIntegers.begin () // Start of range
, vecIntegers.end () // End of range
, DisplayElement <int>(9) ); // Unary function object
return 0;
}
class A
{
void op const
{
std::cout<<"L"<<std::endl;
}
}
int main
{
vector<A>a;
A p;
a.pushback(p);
for_each(a.begin(),a.end(),mem_fun_ref(&A::op));
}
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
template <typename elementType>
struct DisplayElement
{
int a;
DisplayElement(int _a):a(_a)
{
cout<<"constructor"<<_a<<a<<endl;
}
void operator () (const elementType& element) const
{
cout << a<<":"<<element << endl;
}
};
int main(int argc, char *argv[])
{
vector<int> vecIntegers;
vecIntegers.resize(10);
for_each ( vecIntegers.begin () // Start of range
, vecIntegers.end () // End of range
, DisplayElement <int>(123) ); // Unary function object
return 0;
}
在VS2008和GCC里,cout<<"constructor"<<_a<<a<<endl;这句,竟然_a和a的不一样。
这种变态的语法,说小点,是编译器的bug,说大点,是C++标准的bug,楼主不必纠结了