c++: constraints and explicit instantiation [PR96164]
authorPatrick Palka <ppalka@redhat.com>
Thu, 30 Jul 2020 02:06:33 +0000 (22:06 -0400)
committerPatrick Palka <ppalka@redhat.com>
Thu, 30 Jul 2020 02:06:33 +0000 (22:06 -0400)
commitdc3d1e181445fafbbd146eb355a750c41c338794
treeee9484d0ba615f7e8127a51efd6025ace0f0dade
parentbea7a39103a5a86d5daabfff746316dfd4e42b3d
c++: constraints and explicit instantiation [PR96164]

When considering to instantiate a member of a class template as part of
an explicit instantiation of the class template, we need to first check
the member's constraints before proceeding with the instantiation of the
member.

gcc/cp/ChangeLog:

PR c++/96164
* constraint.cc (constraints_satisfied_p): Return true if
!flags_concepts.
* pt.c (do_type_instantiation): Update a paragraph taken from
[temp.explicit] to reflect the latest specification.  Don't
instantiate a member with unsatisfied constraints.

gcc/testsuite/ChangeLog:

PR c++/96164
* g++.dg/cpp2a/concepts-explicit-inst5.C: New test.
gcc/cp/constraint.cc
gcc/cp/pt.c
gcc/testsuite/g++.dg/cpp2a/concepts-explicit-inst5.C [new file with mode: 0644]