我有一个功能:
void foo(int parm11, pointer to function) {...}
我想禁止用第二个参数的NULL
值来调用它。换句话说,我想从以下C ++源代码行的编译器中获取错误消息:
foo(5, NULL);
答案 0 :(得分:10)
你可以捕获一个显式的nullptr
(以及任何可转换为空指针常量的东西),因为它有自己的类型:
void foo(int, pfunc_type); // Your function
void foo(int, std::nullptr_t) = delete; // The "bad" overload
当然,确定的用户仍然可以传递一个空函数指针,他们只是不能直接为参数指定一个空指针常量。
最好重新考虑指针,并将函数引用作为AlexD recommended。