summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.old-deja/g++.benjamin/tem05.C
diff options
context:
space:
mode:
authorupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
committerupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
commit554fd8c5195424bdbcabf5de30fdc183aba391bd (patch)
tree976dc5ab7fddf506dadce60ae936f43f58787092 /gcc/testsuite/g++.old-deja/g++.benjamin/tem05.C
downloadcbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.bz2
cbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.xz
obtained gcc-4.6.4.tar.bz2 from upstream website;upstream
verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository.
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.benjamin/tem05.C')
-rw-r--r--gcc/testsuite/g++.old-deja/g++.benjamin/tem05.C58
1 files changed, 58 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.benjamin/tem05.C b/gcc/testsuite/g++.old-deja/g++.benjamin/tem05.C
new file mode 100644
index 000000000..7b6b95538
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.benjamin/tem05.C
@@ -0,0 +1,58 @@
+// { dg-do assemble }
+// 980924 bkoz
+// just a quick test for export, to make sure we are warning for it.
+// CHANGE ME when it's supported
+
+
+// 14 Templates
+//p 6
+// A namespace-scope declaration or definintion of a non-line function
+// template, a non-inline member function template, a non-inline
+// member function of a class template or a static data member of a
+// class template may be preceeded by the export keyword. If such a
+// template is defined in the same translation unit in which it is
+// declared as exported, the definition is considered to be
+// exported. The first declaration of the template containing the
+// export keyword must not follow the definition. (meaning that export
+// can't beredeclared as non-export??)
+
+// 1
+// template definition
+export template <class T> // { dg-warning "" }
+bool templ_one(T a) {
+ if (a > 0)
+ return true;
+ else
+ return false;
+}
+
+
+// 2
+// static data, mf, mf template
+template <class T>
+class X_one {
+ unsigned short id;
+ T type;
+public:
+ static const bool is_specialized ;
+
+ X_one(const unsigned short& us = 5): id(us), type(T(0)) {}
+ unsigned short ret_id ();
+ template <class T2> bool compare_ge(T2 test);
+};
+
+export template <class T> // { dg-warning "" }
+const bool X_one<T>::is_specialized = false;
+
+export template <class T> // { dg-warning "" }
+unsigned short X_one<T>::ret_id() {
+ return id;
+}
+
+export template <class T2> // { dg-warning "" }
+bool compare_ge(T2 test) {
+ if (test > type) // { dg-error "" } .*
+ return true;
+ return false;
+}
+