这个编译通过是正常的吗?
#include <vector>
#include <algorithm>
int main()
{
std::vector<int> buf;
generate(buf.begin(), buf.end(), []{ return 0; });
}
请注意,在generate()
前面缺少了std::
。
这种行为有文档记录吗?或者我是偶然发现了编译器或库的错误?在我的情况下,使用的是Linux上的GCC 5.3.0和Clang 3.8.0,两者都使用libstdc++,因此可能是库的错误?
std::vector
在同一命名空间 (std
) 中定义。 - awesoonstd
中。如果迭代器类型只是一个裸指针,则无法工作。特别地,行为可能取决于您是在调试模式还是优化模式下编译。 - Kerrek SB