小编for*_*rns的帖子

sizeof和pass-by-reference

我希望有人可以解释以下行为.

假设我正在尝试实现一个确定任何数组长度的函数,但希望避免使用宏.例如

#define array_length(x) ( sizeof(x) / sizeof(x[0]) )
Run Code Online (Sandbox Code Playgroud)

鉴于该函数必须适用于任何参数类型,我必须使用模板.

我的第一次尝试看起来像这样.

template <typename T>
inline size_t
array_length(const T argument) {
    return sizeof(argument) / sizeof(argument[0]);
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为参数被视为指针.一旦T变为T,一切都工作得很好.

我想知道是否有人可以说一下语言实现水平发生了什么.例如,当引用用作函数参数时,将哪些额外信息传递给函数?

c++ templates sizeof

1
推荐指数
1
解决办法
334
查看次数

标签 统计

c++ ×1

sizeof ×1

templates ×1