Boost::odeint演绎/替换失败
boost::odeint deduction/substitution failure
我应该如何改变我的代码,以便正确重载vector_space_norm_inf
实现自定义状态类型?
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;
}
};
问题是我试图从依赖作用域推断模板参数。我知道这是不可能的,我在这里问一些想法如何改变我的代码,以避免它。
不要使用你的Traits
类模板-直接使用你想要的state_t
:
namespace boost { namespace numeric { namespace odeint {
template<typename T>
struct vector_space_norm_inf<vector<complex<T>>> {
...
};
}}}
相关文章:
- 模板参数替换失败,并且未完成隐式转换
- 要求子句中不允许哪些替换失败?
- 模板参数推导/替换失败,lambda作为函数指针
- 类模板参数推导失败会导致替换失败
- C++ 带有 decltype 的 SFINAE:替换失败成为错误?
- 折叠表达式模板参数推导/替换失败
- 使用"std::function"和先前推断的模板参数替换失败 - 为什么?
- 模板参数推导/替换失败 C++
- 当Boost ::绑定模板函数时,模板参数扣除/替换失败
- SFINAE使用演绎,但用替换失败
- 为什么代码中的模板参数推导/替换失败?-.
- GCC 模板参数推断/替换失败
- 为什么模板参数推导/替换失败
- 模板模板参数的替换失败
- C++模板参数推导/替换失败
- C++模板参数推导/替换失败:
- 使用类型名参数时,模板参数推导/替换失败
- 有没有办法将模板的替换失败转换为布尔值(真/假)或标签(标准::true_type/标准::false_type)
- 模板参数扣除/替换失败-STD :: find()
- std::tuple_cat替换失败