【发布时间】:2018-08-28 13:20:25
【问题描述】:
我正在学习关于 constexpr 的 c++11。 所以我去了网站并学习了如何编码。当我学习如何编码时。我提出了一个关于返回数组的大小函数的问题。我认为它是功能性的,但我不知道如何写成这样。 这是我的代码:
#include <iostream>
constexpr auto newline = "\n";
template < typename Type , uint32_t SZ>
constexpr uint32_t len(const Type (&array)[SZ])
{
return SZ;
}
int main()
{
int* ptr = new int (9);
int array[] = {1,2,3,4,5,*ptr};
std::cout << len(array) << newline;
}
/*
Output:
6
*/
我想知道为什么 len 函数正确返回数组的大小。
【问题讨论】:
-
你是在问这个特殊的 sn-p 是如何推导出数组长度的吗?以及如何将这些信息传递回调用者?还是什么?
-
“为什么”是什么意思?为什么不?编译器的编写方式是编译成给出正确答案的代码。
-
请注意,
SZ的适当类型是std::size_t。std::uint32_t可能与std::size_t相同,但这不是必需的,有时也不是这样。
标签: c++ function arguments constexpr