diff options
author | Jason Merrill <jason@redhat.com> | 2017-06-09 16:18:06 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2017-06-09 16:18:06 -0400 |
commit | c5d6c6d94e74dd2f72e323ff01ad2506115ffe05 (patch) | |
tree | eb4f539bbaaeb903a261942e36ebb7ee4064d34d /gcc | |
parent | 3d2e25a240c7115c3deaaa9dea856588300dd05b (diff) | |
download | gcc-c5d6c6d94e74dd2f72e323ff01ad2506115ffe05.zip gcc-c5d6c6d94e74dd2f72e323ff01ad2506115ffe05.tar.gz gcc-c5d6c6d94e74dd2f72e323ff01ad2506115ffe05.tar.bz2 |
Fix template argument of nullptr_t type.
* pt.c (convert_nontype_argument): Check NULLPTR_TYPE_P rather than
nullptr_node.
From-SVN: r249080
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/cp/pt.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/nullptr38.C | 9 |
3 files changed, 13 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 7bc9c20..8695d37 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 2017-06-09 Jason Merrill <jason@redhat.com> + * pt.c (convert_nontype_argument): Check NULLPTR_TYPE_P rather than + nullptr_node. + * parser.c (cp_parser_constant_expression): Check potential_rvalue_constant_expression after decay_conversion. * pt.c (convert_nontype_argument): Don't require linkage in C++17. diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index d8f8d46..40be3c1 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -6480,7 +6480,7 @@ convert_nontype_argument (tree type, tree expr, tsubst_flags_t complain) /* 14.3.2/5: The null pointer{,-to-member} conversion is applied to a non-type argument of "nullptr". */ - if (expr == nullptr_node && TYPE_PTR_OR_PTRMEM_P (type)) + if (NULLPTR_TYPE_P (expr_type) && TYPE_PTR_OR_PTRMEM_P (type)) expr = fold_simple (convert (type, expr)); /* In C++11, integral or enumeration non-type template arguments can be diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr38.C b/gcc/testsuite/g++.dg/cpp0x/nullptr38.C new file mode 100644 index 0000000..82d75ed --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/nullptr38.C @@ -0,0 +1,9 @@ +// { dg-do compile { target c++11 } } + +using nullptr_t = decltype(nullptr); + +constexpr nullptr_t n = nullptr; + +template <void *> struct A { }; + +A<n> a; |