「C++/Tips/Technique/CompileTimePolymorphism/Code」の編集履歴(バックアップ)一覧はこちら

C++/Tips/Technique/CompileTimePolymorphism/Code」(2008/01/09 (水) 20:33:40) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

//cpp/linenumber #include <iostream> struct point_tag {}; struct vector_tag {}; struct Point { typedef point_tag type; }; struct Vector { typedef vector_tag type; }; // Point用 print void print_(const Point& target, point_tag) { std::cout << "Point\n"; } // Vector用 print void print_(const Vector& target, vector_tag) { std::cout << "Vector\n"; } // Point/Vector用print template <typename Arg> void print( const Arg &x ) { print_( x, typename Arg::type() ); // Arg::type で上記のどっちかに振り分ける } int main() { Point p; Vector v; print(p); print(v); }
//cpp/linenumber #include <iostream> struct point_tag {}; struct vector_tag {}; struct Point { typedef point_tag type; }; struct Vector { typedef vector_tag type; }; // Point用 print void print_(const Point& target, point_tag) { std::cout << "Point\n"; } // Vector用 print void print_(const Vector& target, vector_tag) { std::cout << "Vector\n"; } // Point/Vector用print template <typename Arg> void print( const Arg &x ) { print_( x, typename Arg::type() ); // Arg::type で上記のどっちかに振り分ける } int main() { Point p; Vector v; print(p); print(v); }

表示オプション

横に並べて表示:
変化行の前後のみ表示: