- 229 名前:222 mailto:sage [2007/10/03(水) 22:19:01 ]
- #include <cassert>
template <typename Derived> struct base { char interface() { return reinterpret_cast<Derived*>(this)->implementation(); } static char static_func() { return Derived::static_sub_func(); } }; struct derived : base<derived> { char implementation() { return 'A'; } static char static_func() { return 'B'; } }; template <typename T> char f(base<T>& t) { return t.interface(); } int main() { derived d; assert( f(d) == 'A' ); } 英語版wikipediaを参考に書いてみましたがまだしっくりきません というかあきらかに違うような気がします
|

|