3 回答
TA貢獻1853條經驗 獲得超18個贊
int a[] = {1, 2, 3};int *ap = a; // a pointer, size is lostint (&ar)[3] = a; // a reference to the array, size is not losttemplate<typename T, size_t n>size_t array_size(const T (&)[n]) {
return n;}a
size_t array_size(const int (&)[3]) {
return 3;}size_t size_of_a = array_size(a);
n:
template<typename T, size_t n>char (& array_size(const T (&)[n]) )[n];
nnchar
size_t size_of_a = sizeof(array_size(a));
charnn
int havingSameSize[sizeof(array_size(a))];
TA貢獻1836條經驗 獲得超13個贊
// Note that you don't need to name the array, since you don't// actually reference the parameter at all.size_t array_size(const int (&)[1]){
return 1;}size_t array_size(const int (&)[2]){
return 2;}size_t array_size(const int (&)[3]){
return 3;}// etc...int a[2];array_size(a);
template <int n>size_t array_size(const int (&)[n]){
return n;}template <typename T, int n>size_t array_size(const T (&)[n]){
return n;}編輯(&)
&[]&
const int &a[1];
&
const int (&a)[1];
size_t array_size(const int (&)[1])
- 3 回答
- 0 關注
- 459 瀏覽
添加回答
舉報
