aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.old-deja/g++.brendan/template11.C
diff options
context:
space:
mode:
authorJeffrey A Law <law@cygnus.com>1997-08-19 07:34:40 +0000
committerJeffrey A Law <law@cygnus.com>1997-08-19 07:34:40 +0000
commit78f6ae13813180b99245b321ade25c3213ec7f81 (patch)
tree335fa7ed68bccaabc938e142eabc167ac296372e /gcc/testsuite/g++.old-deja/g++.brendan/template11.C
parent2fbf616b6e3115dd2835a13f83daee00913fdcbf (diff)
Initial revision
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@14840 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.brendan/template11.C')
-rw-r--r--gcc/testsuite/g++.old-deja/g++.brendan/template11.C47
1 files changed, 47 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/template11.C b/gcc/testsuite/g++.old-deja/g++.brendan/template11.C
new file mode 100644
index 00000000000..55fa2b20025
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/template11.C
@@ -0,0 +1,47 @@
+// Build don't link:
+// GROUPS passed templates
+template <class Called>
+class aCallback
+{
+public:
+ aCallback(Called& obj, int (Called::*met)());
+
+ int callback();
+
+protected:
+
+private:
+ // the object to call
+ Called& object;
+
+ // the method to apply
+ int (Called::*method)();
+
+};
+
+template <class Called>
+aCallback<Called>::aCallback(Called& obj,
+ int (Called::*met)()) :
+object(obj),
+method(met)
+{};
+
+template <class Called>
+int aCallback<Called>::callback()
+{
+ return (object.*method)();
+}
+
+struct myStruct
+{
+ int action() {return 24;};
+};
+
+main()
+{
+ myStruct toto;
+
+ aCallback<myStruct> cb(toto, &myStruct::action);
+
+ return cb.callback();
+}