diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2017-10-30 22:41:21 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2017-10-30 22:41:21 +0000 |
commit | 77efd154f33154e819186de79687ea55552139f4 (patch) | |
tree | 131a98d20d1920ad9467d96683d0517a2fefe55d | |
parent | 59d7953a634a71f09d02b37ad3031b17ade60d15 (diff) | |
download | gcc-77efd154f33154e819186de79687ea55552139f4.zip gcc-77efd154f33154e819186de79687ea55552139f4.tar.gz gcc-77efd154f33154e819186de79687ea55552139f4.tar.bz2 |
re PR c++/67595 (concepts code causes segfault)
2017-10-30 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/67595
* g++.dg/concepts/pr67595.C: New.
From-SVN: r254245
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/concepts/pr67595.C | 13 |
2 files changed, 18 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e17c94d..33aaba8 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-10-30 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/67595 + * g++.dg/concepts/pr67595.C: New. + 2017-10-30 Paul Thomas <pault@gcc.gnu.org> PR fortran/80850 diff --git a/gcc/testsuite/g++.dg/concepts/pr67595.C b/gcc/testsuite/g++.dg/concepts/pr67595.C new file mode 100644 index 0000000..63162fb --- /dev/null +++ b/gcc/testsuite/g++.dg/concepts/pr67595.C @@ -0,0 +1,13 @@ +// { dg-options "-std=c++17 -fconcepts" } + +template <class X> concept bool allocatable = requires{{new X}->X * }; +template <class X> concept bool semiregular = allocatable<X>; +template <class X> concept bool readable = requires{requires semiregular<X>}; +template <class> int weak_input_iterator = requires{{0}->readable}; +template <class X> bool input_iterator{weak_input_iterator<X>}; +template <class X> bool forward_iterator{input_iterator<X>}; +template <class X> bool bidirectional_iterator{forward_iterator<X>}; +template <class X> +concept bool random_access_iterator{bidirectional_iterator<X>}; +void fn1(random_access_iterator); +int main() { fn1(0); } // { dg-error "" } |