gpt4 book ai didi

c++ - 数组指针与数组引用的区别

转载 作者:太空狗 更新时间:2023-10-29 23:00:58 27 4
gpt4 key购买 nike

我想写一个函数来区分数组和指针。这是计算文字字符串大小所必需的。我试过:

template<typename Ty>
void f(const Ty* rhs) {
std::cout << __FUNCTION__ << rhs << std::endl;
}

template<typename Ty, size_t Dm>
void f(const Ty(&rhs)[Dm]) {
std::cout << __FUNCTION__ << rhs << std::endl;
}

int main(int, char*[]) {
const char arr0[] = "test2";
const char* ptr = "test3";
const char arr6[6] = "test4";
f("test1");
f(arr0);
f(ptr);
f(arr6);
return 0;
}

但是编译器 (VS2013) 告诉我调用不明确。有什么提示吗?

提前致谢。

最佳答案

不幸的是,调用不明确。

作为解决方法,您可以添加一个额外的层:

template<typename Ty>
void f_pointer(const Ty* rhs) {
std::cout << __FUNCTION__ << rhs << std::endl;
}

template<typename Ty, size_t Dm>
void f_array(const Ty(&rhs)[Dm]) {
std::cout << __FUNCTION__ << rhs << std::endl;
}

template<typename T>
std::enable_if_t<std::is_array<T>::value>
f(const T&t)
{
f_array(t);
}

template<typename T>
std::enable_if_t<!std::is_array<T>::value>
f(const T&t)
{
f_pointer(t);
}

Live Demo

关于c++ - 数组指针与数组引用的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32167240/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com