在不分配新内存的情况下使用指针调用重载
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)
可能是最短、最容易理解并保证工作的。
考虑重载:
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)
可能是最短、最容易理解并保证工作的。