103得票3回答
在gsl库中,span和array_view有什么区别?

在最近几个会议的演讲中,我听到了Bjarne Stroustrup和其他人提到了C++的新编码指南以及一些支持它们的类型。 具体来说,我记得他们举例使用span<T>而不是(T* p, int n)作为函数的参数(在谈话中大约32:00时);但我也记得建议使用array_view...

78得票2回答
gsl::not_null<T*> 与 std::reference_wrapper<T> 与 T& 的区别

最近C++核心指南发布了(祝贺!),我关注gsl::not_null类型。如I.12:声明不能为null的指针为not_null中所述: 有助于避免解除引用nullptr错误。通过避免冗余的nullptr检查来提高性能。 ... 通过在源代码中说明意图,实现者和工具可以提供更好的诊断功能,...

29得票2回答
C++ GSL指南是什么?

Stroustrup去年发表了关于他的GSL(Guideline Support Library)的演讲。微软有一个实现在https://github.com/Microsoft/GSL。我曾认为GSL应该对不良编码风格提供建议并提出改进意见。 为此,我安装了MSFT的GSL并创建了一个C++...

10得票1回答
gsl assert相对于c++中的assert有什么优势?

我知道在C++中使用assert的方法。想知道使用gsl_assert与assert有什么区别和好处(根据https://www.learncpp.com/cpp-tutorial/7-12a-assert-and-static_assert/所述,我认为assert是更费时的,那么性能方面,...

8得票1回答
Ensures() - 指南支持库

我试图理解如何在代码中使用 Ensures()。正如示例中所示,如果我尝试使用以下方式的Ensures()... int main(void) { int result = 0; // Some calculation Ensures(result == 255); ...

8得票2回答
narrow_cast 是什么?

我看到一段使用了narrow_cast的代码,如下所示。 int num = narrow_cast&lt;int&gt;(26.72); cout &lt;&lt; num; 问题是我的编译器显示: 'narrow_cast' was not decleared in this sc...

7得票1回答
理解对`const&`的特化需求

在指南支持库中,有一个名为final_action的类(本质上就是众所周知的ScopeGuard)。有两个独立的便利函数用于生成这个模板类。 // finally() - convenience function to generate a final_action template &lt...

7得票1回答
std::basic_string_view<T>和std::span<T>的区别

我正在解析二进制网络数据,并希望尽可能减少内存分配。但现在我意识到有两个非常相似的概念,它们都可能足够适用于我的情况,那就是std::basic_string_view&lt;T&gt;和std::span&lt;T&gt;。 所以我想知道这两者之间的区别,是否有一种比另一种更优?一个明显的...

7得票2回答
我应该返回gsl::span<const T>而不是const std::vector<T>&吗?

我有一个类,其中包含一个std::vector&lt;int&gt;成员和一个返回该向量const引用的成员函数。 class demo { public: //... const std::vector&lt;int&gt; &amp; test() const { ...

7得票1回答
使用gsl::span和range-v3

我尝试了一个小例子,熟悉GSL和range-v3库,并想知道它们如何一起工作。我有这个玩具例子 #include &lt;iostream&gt; #include &lt;range/v3/all.hpp&gt; using namespace std; using namespace ...