[Bug c++/55002] New: trailing return type is rejected in function signature
leonid at volnitsky dot com
gcc-bugzilla@gcc.gnu.org
Sat Oct 20 19:01:00 GMT 2012
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55002
Bug #: 55002
Summary: trailing return type is rejected in function signature
Classification: Unclassified
Product: gcc
Version: 4.8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: leonid@volnitsky.com
7.1.6.4 auto specifier [dcl.spec.auto]
note 2: The auto type-specifier may appear with a function declarator
with a trailing-return-type (8.3.5) in any context where such a
declarator is valid
Contrived example:
-------------------------------------------------------------
typedef unsigned long size_t;
// overload c-array
template<class T, size_t N>
size_t
size(T (&)[N]) { return N; }
// overload - c-string
template<size_t N>
size_t
size(char (&A)[N]) { size_t i=0; while(A[i++]); return i; }
// APPLY
// this works
template<class T, size_t N> size_t apply (const T (&A)[N], size_t (*f)
(const T (&)[N]))
// this rejected -- error: parameter declared ‘auto’
//template<class T, size_t N> size_t apply (const T (&A)[N], auto (*f) ->
size_t (const T (&)[N]))
{ return f(A); };
int main() {
int A[2];
return apply(A, size);
}
------------------------------------------------------------------
Without trailing return type in signature it is impossible to write apply-like
function with can deduce function-type for overloaded functions.
More information about the Gcc-bugs
mailing list