当我关注这个关于char[]
和char*
差异的问题时,出现了以下观察结果。
#include <iostream>
typedef char ar[];
typedef char* pr;
void f2(ar x, pr y)
{
std::cout << std::is_same<decltype(x), decltype(y)>::value << '\n';
std::cout << std::is_same<ar, pr>::value << '\n';
}
int main()
{
char data[] = "data";
char *ptr = data;
f2(data,ptr);
return 0;
}
输出(在 Apple LLVM 版本 4.2 (clang-425.0.28) 上)
1
0
为什么这些报告为不同的类型,而不是不同decltype()
的 s ?我怀疑它们实际上是由于它们的声明而不同的类型typedef
,但是为什么变量报告为相同的类型?