Fusion! Boost.Geometry
@decimalbloat いちおうTupleのをコピーして書き換えてます。ただ、Fusion Sequenceはアダプトした型なんかもあるのでvectorとかlistとかで決め打ちできないんですよ。
2011-01-12 17:20:22@cpp_akira はい。Fusionのサポートがないのは、そのへんを解決する方法を作れなかったからだと思います。ちなみに私も今、別件で全く同じことで悩んでいるので、おてあげです。
2011-01-12 17:34:36【募集】クラステンプレートFを、テンプレート引数Tについて直接特殊化せずに、Tの性質をメタ関数で書いて特殊化する方法(ただしTについて直接特殊化する場合同様、後からメタ関数による特殊化を追加できる必要がある)
2011-01-12 17:46:46template<typename T> void f(identity<T>::type); をf(1)で呼び出そうとしているのに似てるかもしれない。
2011-01-12 17:49:56んー、メタ関数の中に書くと意味ないんだよなー。だから各場所の候補は、テンプレートパラメータの宣言か特殊化かのどっちかなんだよなぁ。
2011-01-12 17:59:13fusion::traits::tag_ofの第二引数がenable_if<${Tを用いた述語}>::typeとなってる版の特殊化は、述語が真ならtag_of<T, void>についての特殊化になります。(続く)
2011-01-12 17:59:31で、tag_of<T>はtag_of<T, void>のことなので、述語が真ならこの特殊化が使われるということです。
2011-01-12 17:59:37同じことを一般化した方法でやろうとすると、enable_ifが成功した時の型を、特殊化ごとに別にしてやらないといけない、ということになりますが、そうしたとしてもtag<T>はtag<T, void>のことなので、そういった特殊化にはマッチしません。そしてこの説明は意味不明。
2011-01-12 18:09:38いまいちユースケースが解らんが http://cpplover.blogspot.com/2008/01/boostenableif.html ではダメなんだろうか
2011-01-12 18:09:54@kikairoya それは特殊化する条件が今その場で決定して、concept_mapみたいに後から追加することがないからこそできる技なのです
2011-01-12 18:15:40