我想在 C++03 中实现以下内容:
template <typename T1, typename T2>
T1 convert(bool condition, T2& value)
{
return condition ? value : conversionFunction(value);
}
除非我想调用 convert
而不必显式指定 T1
。我怎么做?
最佳答案
也许你可以使用 hack。技巧是推迟转换,直到您实际使用返回值。返回值是一个辅助对象,它允许将自身转换为其他内容。
template <typename T>
struct ConvertHack {
T &value_;
const bool cond_;
ConvertHack (bool cond, T &value) : value_(value), cond_(cond) {}
template <typename U> operator U () const {
return cond_ ? value_ : conversionFunction(value_);
}
};
template <typename T>
ConvertHack<T> convert(bool condition, T& value) {
return ConvertHack<T>(condition, value);
}
关于c++ - C++03 中的模板函数返回类型推导,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30538350/