Core issue 2310 - conversion to base of incomplete type.
* class.c (build_base_path): Check COMPLETE_TYPE_P for source type. From-SVN: r260127
This commit is contained in:
parent
d86d6e27db
commit
f8e94a0156
|
@ -1,5 +1,8 @@
|
|||
2018-05-09 Jason Merrill <jason@redhat.com>
|
||||
|
||||
Core issue 2310 - conversion to base of incomplete type.
|
||||
* class.c (build_base_path): Check COMPLETE_TYPE_P for source type.
|
||||
|
||||
CWG 2267 - list-initialization of reference temporary
|
||||
* call.c (reference_binding): List-initializing a reference
|
||||
temporary is copy-list-initialization.
|
||||
|
|
|
@ -370,6 +370,15 @@ build_base_path (enum tree_code code,
|
|||
goto indout;
|
||||
}
|
||||
|
||||
if (!COMPLETE_TYPE_P (probe))
|
||||
{
|
||||
if (complain & tf_error)
|
||||
error ("cannot convert from %qT to base class %qT because %qT is "
|
||||
"incomplete", BINFO_TYPE (d_binfo), BINFO_TYPE (binfo),
|
||||
BINFO_TYPE (d_binfo));
|
||||
return error_mark_node;
|
||||
}
|
||||
|
||||
/* If we're in an NSDMI, we don't have the full constructor context yet
|
||||
that we need for converting to a virtual base, so just build a stub
|
||||
CONVERT_EXPR and expand it later in bot_replace. */
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
// CWG issue 2310
|
||||
// { dg-do compile { target c++11 } }
|
||||
// { dg-options "" }
|
||||
|
||||
template<typename A, typename B> struct check_derived_from {
|
||||
static A a;
|
||||
static constexpr B *p = &a; // { dg-error "" }
|
||||
int ar[p-p+1];
|
||||
};
|
||||
struct W { int i; };
|
||||
struct Z : W
|
||||
{
|
||||
check_derived_from<Z, W> cdf;
|
||||
};
|
Loading…
Reference in New Issue