jeudi 22 octobre 2015

C++ array decay don't happen for reference why?

I was reading about C++ and found that array to normal non const pointer conversion ( technically called as decay) don't happen when we pass array by reference. Is there any reason behind this restriction ?

I know that in C99 there are three fundamental cases array decay happens, namely:

when it's the argument of the & (address-of) operator.

when it's the argument of the sizeof operator.

When it's a string literal of type char [N + 1] or a wide string literal of type wchar_t [N + 1] (N is the length of the string) which is used to initialize an array, as in char str[] = "foo"; or wchar_t wstr[] = L"foo";.

Furthermore, in C11, the newly introduced alignof operator doesn't let its array argument decay into a pointer either.

In C++, there are additional rules, for example, when it's passed by reference.

Thanks

Aucun commentaire:

Enregistrer un commentaire