各要素がサポートしている限り、および でboost::fusion
問題がなければコンパイル時コンテナーを使用するfusion_algebra
default_operations
- スカラー (*) との乗算
- 足し算と引き算 (+,-)
- サイズ変更
これは、double
、float
、またはなどの基本的な浮動小数点型の場合ですstd::complex
。これは、 MTL、boost::ublas、または vexcl と viennaclの vector および matrix 型などの式テンプレートをサポートする型にも当てはまります。ただしstd::vector
、ベクトルは適切な +*-/ 演算子を実装またはオーバーロードしないため、これは不可能です。この場合、3つの可能性があります
- 式テンプレートをサポートするベクター タイプを選択してください
- 融合シーケンスを融合シーケンスで反復し、サブ代数から
for_each
正しいものを呼び出すネストされた代数を実装しますfor_each
- フュージョン シーケンスの要素を反復処理するカスタム操作を実装します。
注1:通常、サイズ変更とは、型のサイズ変更が必要な場合is_resizable
、コンパイル時にtrueに特化することを意味します。
template<>
is_resizable< YourType > : boost::true_type { };
と専門resize_impl<>
化とsame_size<>
。デフォルトの実装を見てください。これは非常に簡単で、ワンライナーで済むはずです。
注 2: ステップ サイズ制御も必要で、expresson テンプレートでベクトル型を選択する場合は、演算子/
と関数max
が存在し、要素ごとの除算と要素ごとの最大値を実行する必要があります。これを実装するのは難しいかもしれません。サポートが必要な場合は、お気軽に再度お問い合わせください。