https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80987

--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
I think the problem is here in do_class_deduction in gcc/cp/pt.c:

  vec<tree,va_gc> *args;
  if (init == NULL_TREE
      || TREE_CODE (init) == TREE_LIST)
    args = make_tree_vector_from_list (init);
  else if (BRACE_ENCLOSED_INITIALIZER_P (init)
           && !TYPE_HAS_LIST_CTOR (type)
           && !is_std_init_list (type))
    args = make_tree_vector_from_ctor (init);
  else
    args = make_tree_vector_single (init);

The {it, a} initializer takes the last branch, but if we take the second
instead (using make_tree_vector_from_ctor) then it does the right thing.

Reply via email to