考虑以下简化示例,也可以在iteration_returns_combined_after_loop_view查看:
success()
令我感到惊讶的是,success{}
无法编译,success() -> success<void>
却无法编译。我提供了模板扣除指南success()
,因此我认为pip install pdfrw
也可以正常使用。
这是C ++ 17标准中的预期行为,还是我遗漏了什么?
答案 0 :(得分:6)
这是一个gcc错误(刚刚提交81486)。在推导success()
时,我们合成了一个包含以下内容的重载集:
// from the constructors
template <class T> success<T> foo(T&& ); // looks like a forwarding reference
// but is really just an rvalue reference
template <class T> success<T> foo(T const& );
// from the deduction guides
template <class T> success<T> foo(T ); // this one is a bit redundant
success<void> foo();
并确定返回类型,就好像它被调用为foo()
一样,这肯定会给你一种success<void>
类型。它不是一个错误。