Closed 4kangjc closed 1 year ago
这个处理的是什么使用场景呢
hmm,少了const版本的重载吧
这个处理的是什么使用场景呢
hmm,少了const版本的重载吧
我看std::optional
都有4个版本的
std::optional
的情况不太一样。
取决于用户怎么使用,std::optional
可能出现在包括但不限于const optional&&
的地方(尽管能够合理正确的使用这种用法的地方非常少见,一定程度上也可以说是罕见),这时候作为标准库,不应当给用户制造不必要的障碍,所以始终应该正确的透传cvr qualifiers。
但是Boxed<T>
只可能作为参数传给用户的continuation,这时候不会(至少不应当)存在const Boxed<T>&
/ const Boxed<T>&&
的场景。实际上我们期望的参数类型只有Boxed<T>
这种by-value或者Boxed<T>&&
这种by-rvalue-ref的使用方式,所以不处理const &(&)
的重载版本。
as a side note,volatile
这个qualifier其实std::optional
也没处理,因为正确的使用volatile
几乎和C++模板类没什么交集。这(optional
不考虑不会用到的volatile
场景)跟我们(Boxed<T>
不考虑不会用到的const
场景)的思路是一致的。
OK
OK
其实boxed和folly的try还是有很多相似点的,实际上用户可能会写成const T&,不过boxed主要还是给core,future等使用的,用户也不会直接使用
OK
其实boxed和folly的try还是有很多相似点的,实际上用户可能会写成const T&,不过boxed主要还是给core,future等使用的,用户也不会直接使用
噢,我看见注释了
// `Boxed` holds the result of an asynchronous execution, analogous to
// `Try` in Facebook's Folly.
emm, Folly 的 Try
也有const
版本
这个处理的是什么使用场景呢