diff options
author | Ben Cheng <bccheng@google.com> | 2014-03-25 22:37:19 -0700 |
---|---|---|
committer | Ben Cheng <bccheng@google.com> | 2014-03-25 22:37:19 -0700 |
commit | 1bc5aee63eb72b341f506ad058502cd0361f0d10 (patch) | |
tree | c607e8252f3405424ff15bc2d00aa38dadbb2518 /gcc-4.9/gcc/testsuite/g++.dg/cpp1y/auto-fn15.C | |
parent | 283a0bf58fcf333c58a2a92c3ebbc41fb9eb1fdb (diff) | |
download | toolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.tar.gz toolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.tar.bz2 toolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.zip |
Initial checkin of GCC 4.9.0 from trunk (r208799).
Change-Id: I48a3c08bb98542aa215912a75f03c0890e497dba
Diffstat (limited to 'gcc-4.9/gcc/testsuite/g++.dg/cpp1y/auto-fn15.C')
-rw-r--r-- | gcc-4.9/gcc/testsuite/g++.dg/cpp1y/auto-fn15.C | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp1y/auto-fn15.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp1y/auto-fn15.C new file mode 100644 index 000000000..987aa96b7 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp1y/auto-fn15.C @@ -0,0 +1,51 @@ +// { dg-do compile { target c++1y } } +// { dg-options "-Wno-return-local-addr" } + +template<class,class> struct same_type; +template<class T> struct same_type<T,T> {}; + +int& f(); +int i; + +decltype(auto) g() { return f(); } +decltype(auto) h1() { return i; } +decltype(auto) h2() { return (i); } +decltype(auto) h2a() { return 0,i; } + +struct A { int i; }; +A a; + +decltype(auto) h3() { return a.i; } +decltype(auto) h4() { return (a.i); } + +template <class T> +decltype(auto) h5(T t) { return t.i; } +template <class T> +decltype(auto) h6(T t) { return (t.i); } + +int main() +{ + decltype(auto) i = f(); + same_type<decltype(i),int&>(); + decltype(auto) i2 = i; + same_type<decltype(i2),int&>(); + decltype(auto) i3 = ::i; + same_type<decltype(i3),int>(); + decltype(auto) i4 = (::i); + same_type<decltype(i4),int&>(); + decltype(auto) i5 = a.i; + same_type<decltype(i5),int>(); + decltype(auto) i6 = (a.i); + same_type<decltype(i6),int&>(); + decltype(auto) i7 = true ? ::i : ::i; + same_type<decltype(i7),int&>(); + + same_type<decltype(g()),int&>(); + same_type<decltype(h1()),int>(); + same_type<decltype(h2()),int&>(); + same_type<decltype(h2a()),int&>(); + same_type<decltype(h3()),int>(); + same_type<decltype(h4()),int&>(); + same_type<decltype(h5(a)),int>(); + same_type<decltype(h6(a)),int&>(); +} |