使用模板重载分辨率

时间:2016-10-11 16:36:14

标签: c++

最近,我遇到了模板重载的重载解析问题,而不像我期望的那样。我已经查看了重载决策规则,但没有找到任何关于我的问题的内容,所以如果有人可以推荐我或解释它为什么会这样做,我会非常感激。

考虑这段代码:

template<unsigned int max_size>
void foo(char (& arr)[max_size], unsigned int used_size) {}

void foo(char arr[], unsigned int size) {}

template<unsigned int max_size>
void boo(const char (& arr)[max_size], unsigned int used_size) {}

void boo(const char arr[], unsigned int size) {}

main()
{
    char arr[10];

    foo(arr, 10); // calls second foo
    boo(arr, 10); // calls first boo
}

我无法弄清楚为什么const会以它的方式对功能的选择产生影响。我尝试用g ++和clang进行编译,但它没有什么区别。

提前感谢任何有用的答案!

0 个答案:

没有答案