Commit a6343f61 by Paolo Carlini Committed by Paolo Carlini

re PR c++/48530 ([C++0x][SFINAE] Hard errors with deleted d'tors)

/cp
2011-04-28  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/48530
	* tree.c (build_cplus_new): Check build_target_expr return
	value for error_mark_node.

/testsuite
2011-04-28  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/48530
	* g++.dg/cpp0x/sfinae18.C: New.

From-SVN: r173063
parent 83b6b866
2011-04-28 Paolo Carlini <paolo.carlini@oracle.com> 2011-04-28 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/48530
* tree.c (build_cplus_new): Check build_target_expr return
value for error_mark_node.
2011-04-28 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/48771 PR c++/48771
* semantics.c (literal_type_p): Reference types are literal types, * semantics.c (literal_type_p): Reference types are literal types,
per the FDIS. per the FDIS.
......
/* Language-dependent node constructors for parse phase of GNU compiler. /* Language-dependent node constructors for parse phase of GNU compiler.
Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998, Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011
Free Software Foundation, Inc. Free Software Foundation, Inc.
Hacked by Michael Tiemann (tiemann@cygnus.com) Hacked by Michael Tiemann (tiemann@cygnus.com)
...@@ -456,7 +456,9 @@ build_cplus_new (tree type, tree init, tsubst_flags_t complain) ...@@ -456,7 +456,9 @@ build_cplus_new (tree type, tree init, tsubst_flags_t complain)
return rval; return rval;
rval = build_target_expr (slot, rval, complain); rval = build_target_expr (slot, rval, complain);
TARGET_EXPR_IMPLICIT_P (rval) = 1;
if (rval != error_mark_node)
TARGET_EXPR_IMPLICIT_P (rval) = 1;
return rval; return rval;
} }
......
2011-04-28 Paolo Carlini <paolo.carlini@oracle.com> 2011-04-28 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/48530
* g++.dg/cpp0x/sfinae18.C: New.
2011-04-28 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/48771 PR c++/48771
* g++.dg/ext/is_literal_type1.C: New. * g++.dg/ext/is_literal_type1.C: New.
......
// PR c++/48530
// { dg-options -std=c++0x }
template<class T,
class = decltype(T())
>
char f(int);
template<class>
char (&f(...))[2];
struct DelDtor {
DelDtor() = default;
~DelDtor() = delete;
};
static_assert(sizeof(f<DelDtor>(0)) != 1, "Error");
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment