Created on 2014-02-15.00:00:00 last changed 131 months ago
With core issue 393, we're allowing function parameters to have type 'T (*)[]' or 'T (&)[]'. This has always been allowed for variables, and is useful in practice:
// guaranteed to be passed an actual array, not just a pointer, but the array can be of any size. void f(int n, int (&a)[]) { ... do stuff with first n elements of a ... } extern int arr[]; void g() { f(100, arr); } void h(int *p) { f(100, p); } // error, not an array! // elsewhere int arr[100]; // ok, no problem void i() { f(100, arr); } // error!
Note that if you actually know the bound of 'arr', you *cannot* pass it to f, because you can't pass 'int [100]' glvalues to a 'int (&)[]' parameter.
So, I'd like EWG to consider this extension:
We should allow "array of N T" glvalues to convert to "array of unknown bound of T", and likewise we should allow "cv pointer to array of N T" prvalues to convert to "cv pointer to array of unknown bound of T" prvalues.
Discussed in Rapperswil 2014. EWG wishes to encourage Smith to write a paper for EWG review, EWG expects to send it forwards to CWG without much ado.
History | |||
---|---|---|---|
Date | User | Action | Args |
2014-02-15 00:00:00 | admin | create |