在不分配新内存的情况下使用指针调用重载

Calling an overload with pointers without allocating new memory

考虑重载:

void foo(int) {std::cout << "foo(int) called.\n";}
void foo(int*) {std::cout << "foo(int*) called.\n";}
void foo(char*) {std::cout << "foo(char*) called.\n";}
void foo(bool*) {std::cout << "foo(bool*) called.\n";}

同时

foo(int{});

将调用第一个重载,在不分配新 int* 的情况下调用第二个重载的最简洁方法是什么?比

更好的东西
foo(static_cast<int*>(nullptr));

我是不是漏掉了一个简单的语法?

虽然 foo(int*{}) 不起作用,并且 foo((int*){}) 仅适用于某些编译器,但 foo((int*)0) 可能是最短、最容易理解并保证工作的。