Hi,

On 11/23/2012 04:47 PM, Jason Merrill wrote:
On 11/23/2012 10:46 AM, Jason Merrill wrote:
On 11/22/2012 11:03 AM, Paolo Carlini wrote:
initialized to true too), but Markus (and me ;) proposes anyway to
initialize trivial_p to false, thus we should be fine (way below
trivial_p is used again but only when deleted_p is false).

It certainly can't hurt.

Actually...we should be calculating triviality normally regardless of whether the function is deleted. Why isn't that happening?
Because in synthesized_method_walk for lambdas we have this early return:

  if (deleted_p)
    {
/* "The closure type associated with a lambda-expression has a deleted
     default constructor and a deleted copy assignment operator."
         This is diagnosed in maybe_explain_implicit_delete.  */
      if (LAMBDA_TYPE_P (ctype)
      && (sfk == sfk_constructor
          || sfk == sfk_copy_assignment))
    {
      *deleted_p = true;
      return;
    }

      *deleted_p = false;
    }

Paolo.

Reply via email to