c++ c++11 member-functions carries-dependency

En C++ 11, ¿cómo especifico que el parámetro "esto" implícito "[[carry_dependency]]"?



c++11 member-functions (1)

En [dcl.attr.depend] / 1 , leí:

El atributo carries_dependency [...] se puede aplicar al declarator-id de una parameter-declaration en una declaración de función o lambda, en cuyo caso se especifica que la inicialización del parámetro conlleva una dependencia de (1.10 ) cada conversión de lvalue a rvalue (4.1) de ese objeto. El atributo también se puede aplicar al declarator-id de una declaración de función, en cuyo caso especifica que el valor de retorno, si existe, conlleva una dependencia de la evaluación de la expresión de llamada de función.

Lo que me falta es una forma de aplicar el atributo a this parámetro implícito.

A modo de ejemplo, considere esta función gratuita:

void fun(int i, Foo * [[carries_dependency]] f);

y es equivalente (pero para el atributo) versión miembro:

void Foo::fun(int i); // can''t add [[carries_dependency]] here?


No estoy seguro y no tengo un compilador con soporte para probar esto, pero aquí hay una posibilidad: creo que la gramática [gram.decl] indica que debería poder ponerlo ("attribute-specifier_opt" ) en el mismo lugar en el que pondría "const" para indicar una constante de este puntero ("cv-qualifier-seq_opt"), lo que tendría sentido:

parameters-and-qualifiers: ( parameter-declaration-clause ) attribute-specifier_opt cv-qualifier-seq_opt ref-qualifier_opt exception-specification_opt

P.ej

struct X{ void f(int i) [[carries_dependency]]; };