2011-09-07 Jason Merrill <jason@redhat.com>
+ * pt.c (type_unification_real): Correct complain arg for tsubsting
+ default template args.
+
* pt.c (tsubst_aggr_type): Check TYPE_P before tsubsting.
2011-09-06 Jason Merrill <jason@redhat.com>
if (!subr)
{
+ tsubst_flags_t complain = (explain_p
+ ? tf_warning_or_error
+ : tf_none);
+
/* Check to see if we need another pass before we start clearing
ARGUMENT_PACK_INCOMPLETE_P. */
for (i = 0; i < ntparms; i++)
{
tree parm = TREE_VALUE (TREE_VEC_ELT (tparms, i));
tree arg = TREE_PURPOSE (TREE_VEC_ELT (tparms, i));
- arg = tsubst_template_arg (arg, targs, tf_none, NULL_TREE);
- arg = convert_template_argument (parm, arg, targs,
- (explain_p
- ? tf_warning_or_error
- : tf_none),
+ arg = tsubst_template_arg (arg, targs, complain, NULL_TREE);
+ arg = convert_template_argument (parm, arg, targs, complain,
i, NULL_TREE);
if (arg == error_mark_node)
return 1;
+2011-09-07 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/sfinae11.C: Check for explanatory diagnostic.
+
2011-09-07 Georg-Johann Lay <avr@gjlay.de>
* gcc.dg/section1.c: Don't xfail for avr.
noexcept( f1(z) ); // { dg-message "required" }
static_assert( noexcept( f2(z) ), "shall be ill-formed." ); // { dg-error "no match|could not convert" }
+ // { dg-error "no member" "" { target *-*-* } 54 }
noexcept( f3(z) ); // { dg-message "required" }
}
+2011-09-07 Jason Merrill <jason@redhat.com>
+
+ * testsuite/20_util/bind/ref_neg.cc: Adjust errors.
+ * testsuite/20_util/duration/cons/1_neg.cc: Adjust errors.
+
2011-09-06 Benjamin Kosnik <bkoz@redhat.com>
* include/std/tuple (_Tuple_impl::_M_head, _M_tail): Mark constexpr.
void test01()
{
const int dummy = 0;
- std::bind(&inc, _1)(0); // { dg-error "no match" }
- std::bind(&inc, std::ref(dummy))(); // { dg-error "no match" }
+ std::bind(&inc, _1)(0); // { dg-error "no match|rvalue" }
+ std::bind(&inc, std::ref(dummy))(); // { dg-error "no match|const" }
}
struct Inc
void
test01()
{
- std::chrono::duration<int> d1(1.0); // { dg-error "no matching" }
+ std::chrono::duration<int> d1(1.0); // { dg-error "no matching|no type" }
}
void
using namespace std::chrono;
duration<int, std::micro> d2(8);
- duration<int, std::milli> d2_copy(d2); // { dg-error "no matching" }
+ duration<int, std::milli> d2_copy(d2); // { dg-error "no matching|no type" }
}