0
カスタム状態タイプを実装するためにvector_space_norm_inf
を適切にオーバーロードするためにコードを変更する必要がありますか?boost :: odeint控除/置換エラー
template<typename T>
class Traits{
public:
typedef T value_t;
typedef complex<value_t> scalar_t;
typedef vector<scalar_t> state_t;
}
using namespace boost;
using namespace numeric;
using namespace odeint;
template<typename T>
struct vector_space_norm_inf<typename Traits<T>::state_t>{
typedef typename Traits<T>::value_t result_type;
typedef typename Traits<T>::scalar_t scalar_t;
typedef typename Traits<T>::state_t state_t;
result_type operator()(const state_t& x) const{
auto comparator=[](const scalar_t& x1, const scalar_t& x2){
return std::abs(x1)<std::abs(x2);
};
auto result=std::max_element(x.begin(),x.end(),comparator);
result_type maxElement=std::abs(*result);
return maxElement;
}
};
問題は、依存するスコープからテンプレートパラメータを推測しようとしていることです。私はこれが不可能であると理解しています。私はコードを変更する方法をいくつか考えています。
あなたは形質クラスを持っているすべてのために特化しますか? – headmyshoulder