我有一个类型和一个模板类
#ifdef USE_QUAD
using hybrid = __float128;
#else
using hybrid = double;
#endif
template<typename T>
struct Time {
int day;
long T dayFraction; // This is an example, I need both in here, T and long T;
};
让事情变得复杂:一个嵌套类
template<typename T>
struct State {
Time<T> time;
std::vector<T> position;
}
现在我想在我的代码中同时使用这个类hybrid
,double
比如
State<hybrid> stateH; // sometimes precision needed
State<double> stateD; // precision never needed
并让预处理器负责混合应该是什么。
然而,代码完美地编译hybrid = double
了 if ,但hybrid = __float128
由于long T dayFraction;
Time 类中的
是否有解决方法来定义别名,例如
using long __float128 = float128;
?
我有一个定义longHybrid
类似的解决方法:
#ifdef USE_QUAD
using hybrid = __float128;
using longHybrid = __float128;
#else
using hybrid = double;
using longHybrid = long double;
#endif
但是转发两个模板参数会影响一些代码,感觉有点多余。我很想听听任何想法。