问题标签 [guideline-support-library]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
807 浏览

c++ - 如何消除“仅使用常量表达式对数组进行索引”警告?

我写了一个 kd-tree 模板,它的参数是一个自然数 K。

作为模板的一部分,我编写了以下函数来计算两点之间的距离(kd_point 是 std::array 的别名)

我打开了“启用 C++ 核心检查(发布)”,它给了我说的警告。是否有正确的方法来编写此例程以消除警告?

0 投票
1 回答
253 浏览

c++ - 枚举值作为 gsl::multi_span 的索引

我想使用 aenum来访问 a 中的元素gsl::multi_span。它适用于int,所以我认为它也适用于enum值,因为底层类型int也是:

GCC 版本 7 告诉我:

有人可以解释一下为什么在这种情况下模板参数推导失败了吗?有解决方法吗?

0 投票
1 回答
261 浏览

c++ - 了解对这种 `const&` 专业化的需求

在 Guidelines Support Library 中有一个类叫做final_action(基本上是众所周知的 ScopeGuard)。有 2 个独立的便利函数可以生成这个模板类:

(来源:https ://github.com/Microsoft/GSL/blob/64a7dae4c6fb218a23b3d48db0eec56a3c4d5234/include/gsl/gsl_util#L71-L82 )

第一个需要什么?如果我们只有第二个(使用转发,也就是通用引用),它不会做同样的事情吗?

0 投票
1 回答
1973 浏览

c++ - 如何使用 gsl::span 修复没有数组指向指针衰减警告?

我正在尝试解决以下警告。

此警告是由以下代码引起的。

C++ 核心指南极其有限的文档表明解决方案是使用跨度。

不幸的是,它没有提供有关如何从数组构建跨度的信息。

我尝试了以下方法。

我也尝试了许多其他选择。它们都导致相同的确切警告。我需要使用什么魔法咒语来避免警告?

0 投票
1 回答
865 浏览

c++ - gsl::span - 指向结束的指针

我需要将 gsl::span 传递给一个函数,该函数需要一个指向开始的指针和一个指向结束的指针。我更新了函数以使用 gsl::span 以避免不使用指针算术警告。那么如何让指针指向末尾呢?

我正在尝试调用 std::ctype::widen。我使用什么神奇的咒语来获取 std::ctype::widen 函数的 end 参数的值?

我尝试了以下。

我还尝试了以下方法。

两者都会导致崩溃。

我可以尝试以下方法,但这只会导致我首先尝试解决的警告。

我开始认为整个 C++ 核心指南和指南支持库考虑得太差,不值得付出努力。这是我第二次遇到“gsl 导致我最初试图解决的确切警告”问题。

0 投票
1 回答
173 浏览

c++ - 使用 SFINAE 的非模板类中的模板函数重载

TL;博士

非模板化类中的几个模板化和重载的非模板化成员函数最终都应该通过同一个成员函数进行路由以执行实际工作。完成所有重载和模板化以将“数据缓冲区”转换为类型(本质上与Guidelines Support Librarygsl::span<std::byte>的近亲)std::array<std::byte, N>


代码墙

细节

struct S是一个 PoD,很容易更改模板enable_if以使用std::is_trivialor std::is_standard_layout。不幸的是,这两种解决方案都“抓住了太多”并最终匹配std::array(即使它们确实修复了//issue块的编译错误)。

我现在的解决方案看起来像死路一条,因为我的直觉是开始添加更多模板参数,而且它似乎很快就会变得非常棘手:(

问题

我的目标是实现以下目标:对任何 PoD(可能包括 C 数组 - 请参见代码中的“奖励”)使用class A' 的bool f()成员函数而没有太多的语法开销,如主体所示,main()并且没有运行时函数调用开销的类型可自动转换为gsl::span(like std::arrayand std::vector)。

理想情况下...

我希望每个第一个参数(或E1uint8_t)有一个模板化函数,并在类主体之外列出多个特化,以进一步减少类声明中感知到的代码混乱,但我无法弄清楚如何正确地做到这一点。类似于以下内容(下面的非法 C++ 代码!):

如果这无法实现,我想知道为什么。

我在启用 C++17 的 MSVC 2017 上。

0 投票
1 回答
1897 浏览

c++ - 为什么 gsl::not_null 确保 ptr 在 get() 上不为空?

在 Microsoft实施指南支持库中,我看到以下代码:

所有gsl::not_null可能使用指针的构造函数都会检查这些指针是否为空,但我们仍会在每次ptr_取消引用时检查指针 ( )的存储值是否为空。鉴于在 C++ 中我们通常不会为不需要的东西付费,为什么我们要进行此检查?

UP:确保按如下方式实现(使用默认标志):

0 投票
1 回答
60 浏览

c++ - 我应该如何表示我拥有的连续元素序列?

我在连续的内存中有一堆类型的数据,我得到了T *; 而且我也知道元素的数量(std::size_t虽然它并不重要)。

我想使用一些单一类型或数据结构来表示我的类型数据。

现在,我所拥有的是用于构建的信息......

  • A gsl::span<T>,但有所有权。
  • A gsl::owner<T *>,但有大小。

我将使用什么类型/结构/容器来表示有关此数据的所有信息?

笔记:

  • 显然我可以使用 GSL 构造;C++2a 或 Boost 中的东西也很好。
  • owner我在想一个和span——也许是的嵌合体gsl::owner<gsl::span<T>>;但我不太喜欢这个主意。
0 投票
1 回答
1281 浏览

string-view - gsl::string_span 和 std::string_view 有何不同?

据我所知,gsl::string_span似乎std::string_view有基本相同的使用理由。真的是这样吗?如果是这样,它们实际上是否相同?如果不是 - 它们有何不同?

相关问题:`gsl::string_span` 的目的是什么?

0 投票
1 回答
1213 浏览

c++ - 我应该在新的 C++ 项目中使用指南支持库 (GSL) 吗?

在新的 C++ 项目中支持和反对使用指南支持库 (GSL) 的优缺点是什么?我发现那里的一些结构非常有吸引力,但有点害怕包含和依赖这样一个基础库。