败犬日报 2026-07-25
败犬日报 2026-07-25
停更了 3 个月,原因是败犬群和 C++ 切割。后面我打算随缘更新了。
1. 引用能做,指针做不了的事情
来自周刊群 jajuju。
一直都有“引用是指针的语法糖”的说法,言下之意就是引用能做的,指针一定能做。真的是这样吗?
这个提案讲了,constexpr 函数如果只取了参数的类型信息,那么就算传了变量也可以编译期计算。但是,只能接受引用,不能是指针。
该提案已进入 C++23。
于是我们可以完成下面的操作:
cpp
#include <cstddef>
template <typename T, size_t N>
constexpr size_t array_size(T (*)[N]) {
return N;
}
template <typename T, size_t N>
constexpr size_t array_size(T (&)[N]) {
return N;
}
void check(int const (*param)[3]) {
// constexpr auto s = array_size(param); // error: ‘param’ is not a constant expression
}
void check(int const (¶m)[3]) {
constexpr auto s = array_size(param);
}
int main() { return 0; }