我可以在for_each
中使用数组指针作为迭代器,但是当我尝试使用distance
执行相同操作时,Solaris 12.4编译器会抱怨找不到匹配项。
这是我的代码:
#include <iterator>
#include <algorithm>
#include <iostream>
#include <iomanip>
using std::cout;
using std::endl;
using std::hex;
struct Bob {
char q[16];
};
Bob stuff[16];
void DoBob(Bob& bob) {
cout << "BOB! " << hex << &bob << endl;
}
int main() {
// int ret = std::distance(&stuff[0], &stuff[3]);
// The line above causes the Solaris C++ compiler to complain:
//"main.cc", line 22: Error: Could not find a match for std::distance<_ForwardIterator, _Distance>(Bob*, Bob*) needed in main().
std::for_each(&stuff[0], &stuff[3], DoBob);
return 0;
}
我倾向于不喜欢责怪编译器。我做错了什么,或者这是Solaris编译器的问题?