在最近几个会议的演讲中,我听到了Bjarne Stroustrup和其他人提到了C++的新编码指南以及一些支持它们的类型。 具体来说,我记得他们举例使用span<T>而不是(T* p, int n)作为函数的参数(在谈话中大约32:00时);但我也记得建议使用array_view...
最近C++核心指南发布了(祝贺!),我关注gsl::not_null类型。如I.12:声明不能为null的指针为not_null中所述: 有助于避免解除引用nullptr错误。通过避免冗余的nullptr检查来提高性能。 ... 通过在源代码中说明意图,实现者和工具可以提供更好的诊断功能,...
Stroustrup去年发表了关于他的GSL(Guideline Support Library)的演讲。微软有一个实现在https://github.com/Microsoft/GSL。我曾认为GSL应该对不良编码风格提供建议并提出改进意见。 为此,我安装了MSFT的GSL并创建了一个C++...
我知道在C++中使用assert的方法。想知道使用gsl_assert与assert有什么区别和好处(根据https://www.learncpp.com/cpp-tutorial/7-12a-assert-and-static_assert/所述,我认为assert是更费时的,那么性能方面,...
我试图理解如何在代码中使用 Ensures()。正如示例中所示,如果我尝试使用以下方式的Ensures()... int main(void) { int result = 0; // Some calculation Ensures(result == 255); ...
我看到一段使用了narrow_cast的代码,如下所示。 int num = narrow_cast<int>(26.72); cout << num; 问题是我的编译器显示: 'narrow_cast' was not decleared in this sc...
在指南支持库中,有一个名为final_action的类(本质上就是众所周知的ScopeGuard)。有两个独立的便利函数用于生成这个模板类。 // finally() - convenience function to generate a final_action template <...
我正在解析二进制网络数据,并希望尽可能减少内存分配。但现在我意识到有两个非常相似的概念,它们都可能足够适用于我的情况,那就是std::basic_string_view<T>和std::span<T>。 所以我想知道这两者之间的区别,是否有一种比另一种更优?一个明显的...
我有一个类,其中包含一个std::vector<int>成员和一个返回该向量const引用的成员函数。 class demo { public: //... const std::vector<int> & test() const { ...
我尝试了一个小例子,熟悉GSL和range-v3库,并想知道它们如何一起工作。我有这个玩具例子 #include <iostream> #include <range/v3/all.hpp> using namespace std; using namespace ...