In [dcl.attr.depend]/1, ho letto:In C++ 11, come posso specificare che il parametro "questo" implicito "[[carries_dependency]]"?
L'attributo [...]
carries_dependency
[...] può essere applicato aldeclarator-id
di unparameter-declaration
in una dichiarazione di funzione o lambda, nel qual caso specifica che l'inizializzazione del parametro porta una dipendenza a (1.10) ogni conversione da valore a valore (4.1) di quell'oggetto. L'attributo può anche essere applicato allodeclarator-id
di una dichiarazione di funzione , nel qual caso specifica che il valore di ritorno, se presente, porta una dipendenza alla valutazione dell'espressione di chiamata di funzione.
Quello che mi manca è un modo per applicare l'attributo al parametro implicito this
.
A titolo di esempio, si consideri questa funzione gratuitamente:
void fun(int i, Foo * [[carries_dependency]] f);
ed è equivalente (ma per l'attributo) Versione membro:
void Foo::fun(int i); // can't add [[carries_dependency]] here?
Sono abbastanza sicuro che può essere fatto, ma si dovrà cercare la sintassi nello standard. Posso provare ad indovinare che sarà qualcosa come '[[carries_dependency]] void fun (int);' o 'void fun (int) [[carries_dependency]];' nella dichiarazione. –
@David Rodríguez - dribeas Se sto leggendo la grammatica, la prima applica l'attributo ai valori di ritorno della funzione (se ce ne sono) mentre quest'ultima non è consentita. –
@ MarkB: 8.4.1p2 sembra indicare che gli attributi di funzione devono essere gli ultimi elementi nella dichiarazione di funzione. –