diff options
author | ian <ian@138bc75d-0d04-0410-961f-82ee72b054a4> | 2018-02-23 22:36:54 +0000 |
---|---|---|
committer | ian <ian@138bc75d-0d04-0410-961f-82ee72b054a4> | 2018-02-23 22:36:54 +0000 |
commit | 88a3ea34080ad3087a8191fbf479543153175d59 (patch) | |
tree | 34eaec34d3588e09f9a77abba776266f124dc823 /gcc/testsuite/g++.dg/template | |
parent | 25e15aaed275cdfef34b3ee6eb3cb4b43a48d44f (diff) | |
parent | e65055a558093bd4fc0b1b0024b7814cc187b8e8 (diff) | |
download | gcc-88a3ea34080ad3087a8191fbf479543153175d59.tar.gz |
Merge from trunk revision 257954.gccgo
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gccgo@257955 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite/g++.dg/template')
-rw-r--r-- | gcc/testsuite/g++.dg/template/instantiate5.C | 9 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/nontype-fn1.C | 11 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/overload15.C | 16 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/sizeof16.C | 7 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/sizeof17.C | 7 |
5 files changed, 48 insertions, 2 deletions
diff --git a/gcc/testsuite/g++.dg/template/instantiate5.C b/gcc/testsuite/g++.dg/template/instantiate5.C index 896313d14d5..d64092eb1a8 100644 --- a/gcc/testsuite/g++.dg/template/instantiate5.C +++ b/gcc/testsuite/g++.dg/template/instantiate5.C @@ -18,7 +18,12 @@ struct B template <typename T> struct C { - virtual void bar() const { T::foo(); } // { dg-error "no matching function" } + virtual void bar() const // { dg-message "required" } + { + T::foo(); // { dg-error "no matching function" } + } }; -C<B> c; // { dg-message "required" } +C<B> c; + +int k; diff --git a/gcc/testsuite/g++.dg/template/nontype-fn1.C b/gcc/testsuite/g++.dg/template/nontype-fn1.C new file mode 100644 index 00000000000..12d29a91a54 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/nontype-fn1.C @@ -0,0 +1,11 @@ +// PR c++/82664 + +template < typename > struct target_disambiguator; +template < typename R, typename A1 > struct target_disambiguator< R(A1) > { + typedef A1 type; + template < R (&)() > struct layout; +}; + +int main() { + typedef target_disambiguator< void (int) > ::type target_type ; +} diff --git a/gcc/testsuite/g++.dg/template/overload15.C b/gcc/testsuite/g++.dg/template/overload15.C new file mode 100644 index 00000000000..ea0e548843d --- /dev/null +++ b/gcc/testsuite/g++.dg/template/overload15.C @@ -0,0 +1,16 @@ +// PR c++79064 - Cannot overload member function templates on type of literal +// { dg-do compile } + +template <unsigned N> +void f (char (*)[0u - 1 > N ? 1 : 7]); + +template <unsigned N> +void f (char (*)[0u - 1ll > N ? 1 : 7]); + +void f () +{ + char x[1], y[7]; + + f<0>(&x); + f<0>(&y); +} diff --git a/gcc/testsuite/g++.dg/template/sizeof16.C b/gcc/testsuite/g++.dg/template/sizeof16.C new file mode 100644 index 00000000000..084bb2185c7 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/sizeof16.C @@ -0,0 +1,7 @@ +// PR c++/84333 +// { dg-options -Wno-pedantic } + +template<typename> int foo() +{ + return sizeof(int) > 1 ? : 1; +} diff --git a/gcc/testsuite/g++.dg/template/sizeof17.C b/gcc/testsuite/g++.dg/template/sizeof17.C new file mode 100644 index 00000000000..2d5892d2c8b --- /dev/null +++ b/gcc/testsuite/g++.dg/template/sizeof17.C @@ -0,0 +1,7 @@ +// PR c++/84333 +// { dg-options -Wno-pedantic } + +template<typename T> int foo() +{ + return sizeof(T) > 1 ? : 1; +} |