当const wchar_t*函数参数被传递给0指针时,有人能告诉我是否存在强制编译错误的方法吗?
例如:
void func(const wchar_t* a)
{
...
}
int main()
{
...
func(0); // <- this should generate a compilation error
...
}我在这里的目的不是要跳过函数内部对此参数的任何验证检查,而是在函数调用根本没有意义的情况下阻止编译。
我正在使用2019
谢谢!!
更新
如@Jarod42所述,我试图为std::nullptr_t添加重载
这会生成编译错误,但它产生的错误是
“重载函数的多个实例与参数列表匹配”
虽然它阻止了编译,但是错误本身是一种错误,并没有解决真正的问题。
使用int类型替换的参数添加重载也会导致错误的编译错误“试图访问已删除的函数”。
是的,遗憾的是,所有这些都不能阻止使用(const wchar_t*)0参数的调用
因此,我要说,我想拒绝0文本和(const wchar_t*)0参数。
发布于 2021-02-11 09:01:49
您可以为std::nullptr_t添加重载
void func(std::nullptr_t) = delete;或者全部抓到:
template <typename T> void func(T) = delete;https://stackoverflow.com/questions/66151600
复制相似问题