>>827 コマンドラインから cl とやると Microsoft (R) 32-bit C/C++ Optimizing Compiler Version XX.XX.XXXX for 80x86 Copyright(C) Microsoft Corp XXXX-XXXX. All rights reserved. と表示されるよ。
> Deletion of a pointer to an incomplete type is an unsafe programming > practice because there is no way for the compiler to verify that the > destructor is indeed trivial.
struct Aho : binary_function<int&, int, void> { void operator() (int& a, int b) const {cerr << a << " " << b <<endl;;} }; struct Baka : binary_function<int, int, void> { void operator() (int a, int b) const {cerr << a << " " << b <<endl;;} };
int main() { int i=30; typedef boost::binder1st<Aho> funca; typedef boost::binder1st<Baka> funcb; Aho a; Baka b; funca fa = boost::bind1st(a, i); funcb fb = boost::bind1st(b, boost::ref(i)); fa(0); fb(0); i = 20; fa(0); fb(0); }
>>895 共通的な比較対象に変換するというアプローチならば すべてポリゴン(三角形リスト)に変換するというのもアリかな。 実行速度の点でダメだろうけど。 ダブルディスパッチをするのならVisitorパターンをオススメする。 ダウンキャストしない方法は多分それしかない。 Modern C++ に依存関係を最小にするVisitorパターンのやり方とか のってるよ。