void foo(const int& v) {
int x = v;
std::cout << x;
}
int main()
{
unsigned y = 1;
foo(y);
}在C++中传递y代替const int& legal
发布于 2018-02-07 00:31:57
是的,这可能是相当烦人的。由于在调用站点将y隐式转换为匿名临时int而导致编译通过,并且允许const int&绑定。
您可以通过编写以下代码来解决此问题
void foo(unsigned v) = delete;甚至是
template<typename Y> void foo(Y v) = delete;因此,除您显式指定的重载之外的所有重载都将被删除。
https://stackoverflow.com/questions/48647305
复制相似问题