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

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

10得票4回答
如何使得基类构造函数适用于派生类并进行参数推导?

当派生类使用基类构造函数时,推断似乎总是失败的fail。然而,当基类有很多构造函数时,重新定义所有构造函数非常笨拙。当基类快速演变出新的构造函数时,也很痛苦。这个老问题在两年前就已经被提出了,所以我想知道:在2020年,当c++17和c++2a可用时,是否有任何解决方法? template&...

9得票1回答
无法从initializer_list移动的解决方法?

方便的initializer_list语法似乎以无法移动列表成员为代价,从而创建不必要的副本。 struct A { // some members which are dynamic resources... A() { cout << "Default Co...

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); ...

8得票1回答
在给定两个不同类型的对象及其在内存中的相对位置的情况下,我是否可以从一个指向另一个对象的指针中推导出指向其中一个对象的指针?

在下面的例子中,我们有两个不同类型的对象,但它们恰好位于内存中相邻的位置。 struct X { alignas(long) int val = 1; }; struct Y { long val = 2; }; [...] std::byte* buf = new s...

8得票1回答
C++23标准中的bfloat16_t是什么?

Cppreference文件中提到,stdfloat包含5种新类型:float16_t、float32_t、float64_t、float128_t和bfloat16_t。前4种类型都很容易理解(分别是带有16、32、64和128位的浮点数),但最后一种类型bfloat16_t对我来说并不清楚...

8得票2回答
为什么C++23中的stacktrace_entry与source_location不同?

class stacktrace_entry { public: string description() const; string source_file() const; uint_least32_t source_line() const; /* ... */ }; ...

8得票2回答
有一天,std::某个命名空间的transform函数能否支持任何函数对象?

std::transform 函数来自 <algorithm> 头文件,适用于范围,它是使我们将范围用作函数子集的“启用器” (在范畴论意义上(¹))。虽然 std::ranges::views::transform 不是基于迭代器的,但其签名与函数式语言中相应函数的签名非常接近(...

8得票1回答
在C++中,通常会如何使用std::spanstream?

<spanstream> 将在C++23中首次亮相(请参见 cppreference)。根据提案,它们是基于std::span缓冲区的字符串流。 我的问题是: std::spanstream 是否具有与旧版std::strstream(或在C++ 98中弃用的strstrea...

8得票1回答
你能在constexpr函数中声明静态局部变量吗?

在 `constexpr` 函数中,你可以使用静态局部变量吗?例如: #include <string_view> #include <utility> enum class axis { x, y, z }; constexpr std::string_...