gpt4 book ai didi

c++ - 如何判断指针是否是指向数组的指针?

转载 作者:太空狗 更新时间:2023-10-29 19:47:39 26 4
gpt4 key购买 nike

考虑一下

template <class T>
inline constexpr bool found_to_be_array (T* specimen)
{
if constexpr (std::is_array_v<T>) {
return true;
}
else {
return false;
};
}

问题是这将在哪种情况下产生可靠的结果?

澄清:我无法更改此函数的占用空间。我没有答案,所以让我在这里发布我的发现。考虑一下:

int ia[]{ 1,2,3,4,5,6,7,8,9,0 };
int iam[3][3][3][3][3]{};

// returns false
auto is_array_1 = found_to_be_array(ia);

// returns true
auto is_array_2 = found_to_be_array(iam);

我仍在研究这个,但对于多维数组,found_to_be_array 有效。

https://godbolt.org/g/ij73Z4

最佳答案

不,这种方法行不通。参数 specimen 已经衰减为指针类型(或者它甚至可能一直是指针); std::is_array 使用的元编程技术不会以某种方式追溯到调用者。

此外,您正在测试(无意中?)T 而不是 T* - 但更改为后者将不起作用。

关于c++ - 如何判断指针是否是指向数组的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51564063/

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