re PR c++/56268 (C++11 ICE with boost multi-precision and boost variant during assignment)
PR c++/56268 * semantics.c (classtype_has_nothrow_assign_or_copy_p): Call maybe_instantiate_noexcept. From-SVN: r195943
This commit is contained in:
parent
e77439af64
commit
ba9146c16b
3 changed files with 24 additions and 0 deletions
|
@ -1,5 +1,9 @@
|
|||
2013-02-09 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/56268
|
||||
* semantics.c (classtype_has_nothrow_assign_or_copy_p): Call
|
||||
maybe_instantiate_noexcept.
|
||||
|
||||
PR c++/56247
|
||||
* pt.c (eq_specializations): Set comparing_specializations.
|
||||
* tree.c (cp_tree_equal): Check it.
|
||||
|
|
|
@ -5413,6 +5413,7 @@ classtype_has_nothrow_assign_or_copy_p (tree type, bool assign_p)
|
|||
else if (copy_fn_p (fn) <= 0)
|
||||
continue;
|
||||
|
||||
maybe_instantiate_noexcept (fn);
|
||||
if (!TYPE_NOTHROW_P (TREE_TYPE (fn)))
|
||||
return false;
|
||||
}
|
||||
|
|
19
gcc/testsuite/g++.dg/ext/has_nothrow_copy-8.C
Normal file
19
gcc/testsuite/g++.dg/ext/has_nothrow_copy-8.C
Normal file
|
@ -0,0 +1,19 @@
|
|||
// PR c++/56268
|
||||
// { dg-options -std=c++11 }
|
||||
|
||||
template <class T>
|
||||
struct A {
|
||||
A(const A&) noexcept (T::value);
|
||||
};
|
||||
|
||||
struct B {
|
||||
static const bool value = true;
|
||||
};
|
||||
|
||||
template <class T>
|
||||
struct C {
|
||||
static const bool value = __has_nothrow_copy (T);
|
||||
};
|
||||
|
||||
#define SA(X) static_assert((X),#X)
|
||||
SA(C<A<B>>::value);
|
Loading…
Add table
Reference in a new issue