【发布时间】:2015-03-17 23:46:39
【问题描述】:
考虑重载:
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*{})怎么样? -
这是我尝试的第一件事。显然是非法语法
-
呵呵,今天学到东西了。
-
using intptr = int*; foo(intptr{});应该可以工作 -
注意所有这些都分配内存(使用自动分配)
标签: c++ pointers overloading