diff options
author | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2017-10-07 16:10:02 +0000 |
---|---|---|
committer | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2017-10-07 16:10:02 +0000 |
commit | ae570a5df8101c83c43c5a8ccad25d50c6ce9cda (patch) | |
tree | 37a4be016b811eaa7262b1fe62800135f49f6c78 | |
parent | f7f62573653da3e31a3a6e5869ffd2260445a395 (diff) | |
download | gcc-ae570a5df8101c83c43c5a8ccad25d50c6ce9cda.tar.gz |
2017-10-07 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/80805
* g++.dg/cpp0x/pr80805.C: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@253510 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/pr80805.C | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr80805.C b/gcc/testsuite/g++.dg/cpp0x/pr80805.C new file mode 100644 index 00000000000..a13ee1139c7 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/pr80805.C @@ -0,0 +1,21 @@ +// { dg-do compile { target c++11 } } +// { dg-options "-g" } + +template<class T> struct R { using type = T; }; +template<class F> F r(typename R<F>::type f) { return f; } +template<class F> void s(F) {} +template<bool, class F> void t(F f) { s(r<F>(f)); } +template<bool> struct S {}; +template<class> struct P { constexpr static bool value = false; }; +template<class D> +void g() +{ + constexpr static bool H = P<D>::value; + using X = S<H>; + []() -> X + { + t<false>([]{}); + return X{}; + }(); +} +int main() { g<int>(); } |