该标准在5.3.4/7中说:
当direct-new-declarator中的表达式的值为零时,将调用分配函数以分配不带元素的数组.
......并且,在3.7.3.1/2中:
取消引用作为零大小请求返回的指针的效果是未定义的.
...但是,指针不能是空指针.
由于实际解除引用指针是未定义的行为,是否有任何实现返回指向保护页面的指针?我想这很容易,并且有助于检测错误/提高安全性.
偶尔,我会将函数的返回值赋给auto类型的变量(例如auto returnValue = someFunction();),但仍希望澄清/强制执行关于该变量类型的某些假设 - 即它是类型的int.
虽然Concepts&type_traits提供了一些非常强大的静态假设验证功能,但它们不支持这样的内容:
static_assert( isType( returnValue, int ) );
//OR
static_assert( int == typeof( returnValue ) );
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
当我遇到一些看起来像这样的代码时,我正在重构一些代码:
if( __some_bool__ != NULL ) {
.....do something......
}
Run Code Online (Sandbox Code Playgroud)
哪里__some_bool__是bool.我不是说了BOOL那是typedef在Windows头文件"d.
这绝对不是(编写本文的程序员)的意图.但是,在实际修复它之前,我想确保我没有破坏任何东西.
这将如何评估?不false== NULL?发生了什么样的胁迫?