参数的重载函数引用const char数组和const char指针不明确

时间:2017-08-07 07:59:28

标签: c++

请看这段代码:

void fn(const char *s) { }
void fn(const char (&s)[4]) { }

int main() {
    fn("bla");
}

此代码无法编译,因为fnmain的调用不明确。这是为什么?根据C ++ 14标准(2.14.5 / 8),"bla"的类型是 n const char 的数组,所以我希望第二个fn将被调用。

我可以以某种方式实现我可以区分编译时字符串和const char *,因此将调用fn的不同版本(在某种程度上,对于编译时字符串,我有字符串的长度)?就像使用它一样(这不起作用,因为fn(const char *)将被使用):

template <std::size_t S>
void fn(const char (&s)[S]) { }

0 个答案:

没有答案