小编Tom*_*sen的帖子

为什么noexcept在标准库中没有使用更多?

由于noexcept引入并解决了许多问题throw(),现在有理由指定函数是否不抛出异常.虽然它不是编译时限制,但它将使编译器能够进行一些潜在的优化,如果没有别的,信号和文档,则为函数的用户提供值.

鉴于此我其实是有点惊讶,当我通过标准的功能,如浏览:std::time,std::timespec_get,和std::memcmp,看见他们都不使用的noexcept符.它不像在标准库中根本没有使用它的std::tie功能,例如函数使用它,以及其他功能.但很大一部分功能,不要使用它.

我想对于在某些情况下具有未定义行为的函数是有意义的,例如std::strlen,因为这将使实现者更自由.

但对于没有指定情况可导致未定义行为的函数,以及显然不会抛出异常的函数,为什么不使用说明noexcept符声明这些函数?

它不仅仅是因为与旧C函数保持相似性,因为例如std::timespec_getC++ 11中的新函数,所以它必须是出于某种其他原因.

编译器可能非常聪明,可以检测到函数不会抛出异常,因此可以进行相同的优化.但在我看来,最好的论据之一noexcept是文档值,它来自它,当它缺失时将缺乏.

这让我得出了我的最终假设,noexcept标准库中缺少的说明符实际上是疏忽,就像缺失std::make_unique的情况一样.但与std::make_uniqueC++ 14中修正(实现)的缺失不同,上面的函数仍然没有(从C++ 17开始)noexcept.

有没有人知道失踪noexcept说明者背后的原因,或者我是否认为这是一种疏忽?

c++ c++11

17
推荐指数
1
解决办法
578
查看次数

清漆排序查询字符串参数

我有很多请求,以避免缓存,因为列出了所有列表排列,即:

http://.....&var=a,b,c
http://.....&var=a,c,b
http://.....&var=b,a,c
http://.....&var=b,c,a
http://.....&var=c,a,b
http://.....&var=c,b,a
Run Code Online (Sandbox Code Playgroud)

是否有一种聪明的方法将这些值散列到相同的值?是查询字符串值的排序版本中最简单的方法吗?

c varnish

6
推荐指数
1
解决办法
2326
查看次数

如何在清漆中获取请求正文

我目前正在做一个基于清漆的项目。

我们写vclvmod。但是项目需要检查请求体。如何获取帖子请求正文VCLvmod使用C function?

varnish varnish-vcl

5
推荐指数
2
解决办法
2023
查看次数

为什么这段代码不会进入PL/SQL的IF块?

我有PL/SQL代码以下,这不是进入IF块.为什么不进入IF Block?

感谢您的回复.

DECLARE
  p_datacenterid VARCHAR2(50) := '';
  p_dcid         VARCHAR2(50);
BEGIN
  dbms_output.put_line('test');
  -- Check if DataCenterId is null
  IF nvl(p_datacenterid, '') = '' THEN
      dbms_output.put_line('DataCenterID is empty');
      SELECT datacenterid
        INTO p_dcid
        FROM pod_tab
       WHERE url = 'dit3.ezlm.adp.com'
         AND rownum = 1;
  END IF;
END;
/
Run Code Online (Sandbox Code Playgroud)

oracle null plsql

1
推荐指数
1
解决办法
85
查看次数

标签 统计

varnish ×2

c ×1

c++ ×1

c++11 ×1

null ×1

oracle ×1

plsql ×1

varnish-vcl ×1