10得票1回答
为什么C++23范围适配器要求可调用对象是可拷贝构造的?

дёҖдәӣиҢғеӣҙйҖӮй…ҚеҷЁпјҢдҫӢеҰӮfilter_ВӯviewгҖҒtake_Вӯwhile_Вӯviewе’Ңtransform_viewпјҢдҪҝз”Ёstd::optionalзҡ„иЎЁе…„ејҹcopyable-boxжқҘеӯҳеӮЁеҸҜи°ғз”Ёе...

30得票1回答
C++中的std::expected是什么?

我在 StackOverflow 上找到了一篇最受尊重的答案,其中提到了 std::expected 模板类的使用示例:C++20 中的协程是什么? 与此同时,我在 cppreference.com 上没有找到任何有关这个类的信息。能否请您解释一下它是什么?

9得票3回答
在std::ranges::views::iota中,O(1)查找/包含。

我知道iota可能是复杂的(例如无限),因此在一般情况下这不容易完成,但在某些情况下,应该可以在O(1)中执行查找/包含操作。 例如 int main() { auto vals = views::iota(10'000'000'000, 100'000'000'000); ...

16得票4回答
为什么在C++23中要使用allocate_at_least()?

根据cppref: std::allocator<T>::allocate_at_least 通过调用::operator new(还可以提供一个额外的std::align_val_t参数),分配至少n个未初始化的存储空间,每个存储空间的大小为count * sizeof(T)...

7得票1回答
在 `ranges::to` 中使用别名容器是否有效?

目前只有MSVC支持nifty helper ranges::to,因此我无法在其他编译器中验证它。基本上,我为STL容器创建了一个类型别名,但是一旦我尝试将其传递给ranges::to,编译就会失败。那么这是有效的用法吗?为什么下面的第二个(已注释)示例不能编译? #include &lt...

24得票2回答
stdfloat中的floatN_t是否保证符合IEEE标准?

与基本类型 - float、double 和 long double 不同,C++23 中引入的 <stdfloat> 中的新类型 floatN_t 是否总是 IEEE 标准二进制浮点类型? 固定宽度浮点数 的 cppreference 页面确实提到了精度和指数位数,这与 IEE...

23得票2回答
为什么 std::views::split() 可以编译通过,而使用未命名的字符串字面值作为模式的 split() 却无法编译通过?

当std::views::split()接收到一个未命名的字符串字面值作为模式时,它不会将该字符串分割,但它可以很好地处理未命名字符字面值。 #include <iomanip> #include <iostream> #include <ranges> ...

7得票2回答
在C++23中,使用std::ranges/std::views与std::expected的最佳方法是什么?

让我描述一个场景,首先我们有一个函数,它返回一些数据,我们无法确定其有效性,即: auto random_predicate() -> bool { int v = uniform_dist(e1); // uniform distribution 1 to 100 r...

18得票1回答
理解 C++23 中的 std::inout_ptr 和 std::out_ptr

我一直在阅读C++23提出的库更改列表,对于std::out_ptr和std::inout_ptr(它们的_t兄弟)非常好奇。据我所知,它们是一种智能指针的包装器,以便与原始指针兼容,但我还没有理解它们。也许这里有人熟悉该提案或可以给出一个不那么像ISO的解释或示例?

13得票1回答
为什么可以有const赋值运算符

随着C++23的推出,将会有 std::pair<T1, T1>::operator =( const pair &other ) const; 对于我来说,对const对象进行赋值操作符没有任何意义,因为对象是不可修改的。为什么C++23会在pair上有这个运算符呢...