Enr*_*lis 12 c++ pass-by-reference pass-by-pointer c++17 std-variant
我从未使用过std::get_if,并且由于它的名称与 不同std::get,我看不出为什么它的参数应该是指针\xc2\xb9 (而std::get有一个按引用参数)。
\xc2\xb9如果它也被命名std::get,那么重载解析就足够了。
是的,我的问题可能会被欺骗到问题 std::any_cast() 和 std::get_if(std::variant) 是否绝对有必要将指针作为参数?,但关键是没有答案解决std::get_ifvs std::get,只有一个评论;唯一的答案集中在std::any_cast。
康桓瑋*_*康桓瑋 16
这是因为get_if是noexcept,所以永远不会抛出异常。为了实现这一点,它必须返回一个pointer,以便nullptr在访问失败时可以返回。
因为它返回了指针,所以它必须采用 的指针variant。如果它接受 的引用variant,那么它必须能够接受 、 和 的类型variant&,const variant&但variant&&指针const variant&&保持引用限定是没有意义的。
考虑到get_ifAccept variant&&,您所做的是返回 xvalue 的地址,这很糟糕。即使get_if只允许variant&and const variant&,后者仍然可以接受 avariant&&并返回 a 悬空。
| 归档时间: |
|
| 查看次数: |
5814 次 |
| 最近记录: |