[complement-svn] SF.net SVN: complement: [1790] trunk/complement/explore/inquiry/shades
Status: Pre-Alpha
Brought to you by:
complement
From: <com...@us...> - 2007-11-21 11:53:52
|
Revision: 1790 http://complement.svn.sourceforge.net/complement/?rev=1790&view=rev Author: complement Date: 2007-11-21 03:53:50 -0800 (Wed, 21 Nov 2007) Log Message: ----------- how to use paramertized member function Added Paths: ----------- trunk/complement/explore/inquiry/shades/Tmethod/ trunk/complement/explore/inquiry/shades/Tmethod/Makefile trunk/complement/explore/inquiry/shades/Tmethod/Makefile.inc trunk/complement/explore/inquiry/shades/Tmethod/test.cc Property changes on: trunk/complement/explore/inquiry/shades/Tmethod ___________________________________________________________________ Name: svn:ignore + obj Added: trunk/complement/explore/inquiry/shades/Tmethod/Makefile =================================================================== --- trunk/complement/explore/inquiry/shades/Tmethod/Makefile (rev 0) +++ trunk/complement/explore/inquiry/shades/Tmethod/Makefile 2007-11-21 11:53:50 UTC (rev 1790) @@ -0,0 +1,9 @@ +# -*- Makefile -*- Time-stamp: <04/01/09 16:53:50 ptr> + +SRCROOT := ../../.. +COMPILER_NAME := gcc + +include Makefile.inc +include ${SRCROOT}/Makefiles/gmake/top.mak + +LDFLAGS += -Wl,-rpath=${STLPORT_LIB_DIR} Added: trunk/complement/explore/inquiry/shades/Tmethod/Makefile.inc =================================================================== --- trunk/complement/explore/inquiry/shades/Tmethod/Makefile.inc (rev 0) +++ trunk/complement/explore/inquiry/shades/Tmethod/Makefile.inc 2007-11-21 11:53:50 UTC (rev 1790) @@ -0,0 +1,4 @@ +# -*- makefile -*- Time-stamp: <04/04/16 20:55:38 ptr> + +PRGNAME = test +SRC_CC = test.cc Added: trunk/complement/explore/inquiry/shades/Tmethod/test.cc =================================================================== --- trunk/complement/explore/inquiry/shades/Tmethod/test.cc (rev 0) +++ trunk/complement/explore/inquiry/shades/Tmethod/test.cc 2007-11-21 11:53:50 UTC (rev 1790) @@ -0,0 +1,53 @@ +#include <iostream> + +using namespace std; + +template <class T> +class A +{ + public: + void f() + { T *v = new T(); v->f(); } +}; + +template <class T, void (T::*M)() = &T::f > +class C +{ + public: + void f() + { T *v = new T(); (v->*M)(); } +}; + +class B +{ + public: + typedef void (B::*mf)(); + + void f() + { cerr << "B::f\n"; } + + void g() + { cerr << "B::g\n"; } +}; + +int main() +{ + A<B> a; + + a.f(); + + C<B,&B::f> c; + + c.f(); + + C<B> c1; + + c1.f(); + + C<B,&B::g> c2; + + c2.f(); + + return 0; +} + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |