我无法通过g ++ 4.3.2编译以下代码:
#include <stdlib.h>
#include <algorithm>
struct Generator {
ptrdiff_t operator() (ptrdiff_t max) {
return rand() % max;
}
};
Generator generator;
std::vector<size_t> indices;
// fill vector
std::random_shuffle(indices.begin(), indices.end(), generator); // error here!
为什么我的编译器会在最后一行引发跟踪错误?
error: no matching function for call to ‘random_shuffle(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, Generator&)’
提前致谢!
答案 0 :(得分:0)
实际上我的代码Generator
结构是在函数中声明的。我不知道wjy,但g ++ 4.3.2不接受这个。在我将结构声明移出函数后,编译成功了。我相信这是编译器中的一个错误。此外,早期版本的g ++成功编译了原始代码。