
Or it shall have pointer to function type. The postfix expression shall be either an lvalue that refers to aįunction (in which case the function-to-pointer standardĬonversion ( ) is suppressed on the postfix expression), There are two kinds of function call: ordinary function call and memberĪ function call is a postfix expression followed by parenthesesĬontaining a possibly empty, comma-separated list of expressions whichĬonstitute the arguments to the function. pseudo-destructor-name postfix-expression -> pseudo-destructor-name postfix-expression ++ postfix-expression - dynamic_cast ( expression ) static_cast ( expression ) reinterpret_cast ( expression ) const_cast ( expression ) typeid ( expression ) typeid ( type-id ) expression-list: initializer-list pseudo-destructor-name: nested-name-specifier opt type-name :: ~ type-name nested-name-specifier template simple-template-id :: ~ type-name nested-name-specifier opt ~ type-name ~ decltype-specifier template opt id-expression postfix-expression -> template opt id-expression postfix-expression. postfix-expression: primary-expression postfix-expression postfix-expression postfix-expression ( expression-list opt ) simple-type-specifier ( expression-list opt ) typename-specifier ( expression-list opt ) simple-type-specifier braced-init-list typename-specifier braced-init-list postfix-expression. X = i // OK: i is explicitly captured by m2 // and implicitly captured by m1 } Īuto m4 = Lambda-expression captures an entity and that entity is not defined orĬaptured in the immediately enclosing lambda expression or function, the program is Variable with automatic storage duration from its reaching scope, thatĮntity shall be captured by the lambda-expression. If a lambda-expression odr-uses ( ) this or a Lambda expression, its nearest enclosing function shall be a non-static member function. An entityĬaptured by a lambda-expression is odr-used ( ) in the scopeĬontaining the lambda-expression. The form ~ decltype-specifier also denotes the destructor,īut it shall not be used as the unqualified-id in a qualified-id.Īn entity is captured if it is captured explicitly or implicitly. The two class-names shall refer to the same class this Point in its potential scope ( ).Īnd the two class-names refer to the same class, this The result isĪn lvalue if the member is a static member function or a data member and aĪ class member can be referred to using a qualified-id at any The type of the result is the type of the member. Qualified-id describes name lookup forĬlass members that appear in qualified-ids.

Or one of its base classes (Clause ), is a Nested-name-specifier: :: opt type-name :: :: opt namespace-name :: decltype-specifier :: nested-name-specifier identifier :: nested-name-specifier template opt simple-template-id ::Ī nested-name-specifier that denotes a class, optionallyįollowed by the keyword template ( ), and thenįollowed by the name of a member of either that class ( ) Qualified-id: nested-name-specifier template opt unqualified-id :: identifier :: operator-function-id :: literal-operator-id :: template-id If the entity is a function, variable, or data member and a prvalue otherwise. Result is the entity denoted by the identifier. The type of the expression is the type of the identifier. Identifier that names a non-static member is transformed to aĬlass member access expression ( ).


Within the definition of a non-static member function, an Template auto A::f(int t) -> decltype(t + g()) Īn identifier is an id-expression provided it hasīeen suitably declared (Clause ).įor operator-function-ids, see forĬonversion-function-ids, see for

Template auto f(T t) -> decltype(t + g()) [ Note: only class members declared prior to the declaration Type for purposes of class member access ( ) outside the memberįunction body. end note ] Unlike the objectĮxpression in other contexts, *this is not required to be of complete Occur until the complete declarator is known. [ Note: this is because declaration matching does not The declaration of a static member function (although its type and value categoryĪre defined within a static member function as they are within a non-static It shall not appearīefore the optional cv-qualifier-seq and it shall not appear within If a declaration declares a member function or member function template of aĬlass X, the expression this is a prvalue of type “pointer toĬv-qualifer-seq and the end of the function-definition,
