c++ c++11 trailing-return-type

c++ - ¿Es ''auto a_class:: f(…)-> T const'' ambiguo en la gramática?



c++11 trailing-return-type (1)

¿Cómo debe interpretarse el prototipo de la función de miembro a continuación en C ++ 11?

class C { public: auto f(...) -> T const; }

Me parece que podría ser una función miembro constante de la clase C, o una función miembro no constante que devuelve un valor constante de tipo T.

Sé que podría escribir la función como

T const f(...);

o

T f(...) const;

Sin embargo, quiero ser coherente con la forma en que declaro las funciones, por lo que decidí usar el nuevo C ++ 11 auto f(...) -> RetType forma en todas partes.


El tipo trailing-return viene después de los calificadores cv y ref de una función miembro no estática. Esto significa que el ejemplo en la pregunta es el mismo que T const f(...); .

§8.4.1 [dcl.fct.def.general] p2

El declarador en una función-definición tendrá la forma

D1 ( parámetro-declaración-cláusula ) cv-qualifier-seq opt ref-qualifier opt excepción-especificación opt atributo-specifier-seq opt trailing-return-type opt

Para declarar una función miembro const , escribiría auto f(...) const -> T const; .