diff options
author | Andrew Sutton <asutton@lock3software.com> | 2019-10-23 13:05:32 +0000 |
---|---|---|
committer | Andrew Sutton <asutton@lock3software.com> | 2019-10-23 13:05:32 +0000 |
commit | f5a21d68912014c4e4d9f4461fb5c9c525dd81bf (patch) | |
tree | 2b9aaf8e126d6b731f3379b23cc263f78ddbad94 /gcc/testsuite | |
parent | 516e07faa9cc6a8da2ccb26b36d4ecc319bcb879 (diff) |
Fix a bug with type constraints in constructors.
gcc/cp/
* parser.c (cp_parser_constructor_declarator_p): Pass an empty
decl-specifier-seq to make sure we parse type constraints as part
of a type-specifier.
gcc/testsuite/
* g++.dg/cpp2a/concepts5.C: New test.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@277323 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp2a/concepts5.C | 24 |
2 files changed, 28 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a9c44136a2c..2fd237bd8be 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -344,6 +344,10 @@ * gcc.dg/ipa/pr91089.c: Add sub-test for range analysis. * g++.dg/tree-ssa/ivopts-3.C: Force a function to be noinline. +2019-10-15 Andrew Sutton <asutton@lock3software.com> + + * g++.dg/cpp2a/concepts5.C: New test. + 2019-10-15 Andrew Pinski <apinski@marvell.com> * gcc.c-torture/compile/20191015-1.c: New test. diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts5.C b/gcc/testsuite/g++.dg/cpp2a/concepts5.C new file mode 100644 index 00000000000..24ac2aa4095 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp2a/concepts5.C @@ -0,0 +1,24 @@ +// { dg-do compile { target c++2a } } + + +template <typename T, typename U> +concept same_as = __is_same_as(T, U); + +template<typename T> +concept character = same_as<T, char>; + +struct T +{ + constexpr T(same_as<int> auto const x) : val(0) { } + + constexpr T(character auto const x) : val(1) { } + + int val; +}; + +void test() +{ + static_assert(T(0).val == 0); + static_assert(T('a').val == 1); +} + |