使用libc ++的Clang 3.8.1编译以下程序:
componentDidMount() {
UCRef.on('value', snapshot => {
this.setState({usercount: snapshot.val()});
});
}
但是使用libstdc ++的gcc 6.1.0却没有。第一行gcc错误是:
UCRef.on('value', func)
谁是对的?
注意:提升版本1.61
答案 0 :(得分:11)
它是bug in libc++; rbegin
正在委派template <class _Cp>
inline _LIBCPP_INLINE_VISIBILITY
auto crbegin(const _Cp& __c) -> decltype(rbegin(__c))
{
return rbegin(__c);
// ^-- unqualified, allows ADL
}
,但通过将其称为不合格,它会选择boost::rbegin
(documentation):
crbegin
这与 [iterator.range] 相反,后者表示std::rbegin
应仅委托给template <class C> constexpr auto crbegin(const C& c) -> decltype(std::rbegin(c));
:
std::rbegin(c)
14 - 返回:
cbegin
。
Libc ++的cend
,crend
和{{1}}的实现具有相同的错误。