由于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说明者背后的原因,或者我是否认为这是一种疏忽?
我有很多请求,以避免缓存,因为列出了所有列表排列,即:
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)
是否有一种聪明的方法将这些值散列到相同的值?是查询字符串值的排序版本中最简单的方法吗?
我目前正在做一个基于清漆的项目。
我们写vcl和vmod。但是项目需要检查请求体。如何获取帖子请求正文VCL或vmod使用C function?
我有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)