【发布时间】:2015-11-22 04:29:30
【问题描述】:
请考虑以下代码:
using custom_t = std::valarray<unsigned>;
custom_t o;
unsigned acc = std::accumulate(std::cbegin(o), std::cend(o), 0);
g++-5 说
没有匹配函数调用
cbegin(custom_t&)
如果我改用std::begin(o) 和std::end(o),一切正常。这是编译器错误吗?代码使用 Visual Studio 2015 编译。
【问题讨论】:
-
Compiles in libc++. 我认为 libstdc++ 正在为满足容器概念的类型实现某种 SFINAE。由于
std::valarray不是Container,所以调用失败。