【发布时间】:2023-04-09 06:41:01
【问题描述】:
我希望能够使用boost::enable_if 来关闭/打开某些方法。
对于整数类型,我想从 operator() 返回 TypeToReturn
对于其他类型我想返回const TypeToReturn&
这是我的尝试:
template<typename T>
struct Holder{
typedef T type;
};
template<typename First,
typename TypeToReturn = typename Holder<First>::type>
struct SuperClass{
typename boost::enable_if<boost::is_integral<TypeToReturn> >::type
operator()(int& someParameterNotImportant) const
{
// stuff
}
const typename boost::disable_if<boost::is_integral<TypeToReturn> >::type&
operator()(int& someParameterNotImportant) const
{
// stuff
}
};
我收到这些函数无法重载等错误。
我什至不确定这次尝试是否朝着好的方向迈出了一步。
编辑:在第一次建议后,我在更正后添加代码, 仍然给出“const typename boost::disable_if.....不能重载”的问题
template<typename T>
struct Holder{
typedef T type;
};
template<typename First,
typename TypeToReturn = typename Holder<First>::type>
struct SuperClass{
typename boost::enable_if<boost::is_integral<TypeToReturn>, TypeToReturn >::type
operator()(int& someParameterNotImportant) const
{
// stuff
}
const typename boost::disable_if<boost::is_integral<TypeToReturn>, TypeToReturn >::type&
operator()(int& someParameterNotImportant) const
{
// stuff
}
};
【问题讨论】:
标签: c++ templates boost template-meta-programming c++03