有什么方法可以避免下面例子中的伪函数吗?
template<class T1, class T2>
struct A {
static T1 T1_ ();
static T2 T2_ ();
typedef decltype (T1_ () + T2_ ()) sum_type;
};我想写
typedef decltype (T1+T2) sum_type;但这是不可能的,因为T1和T2是类型,而不是变量。我的上面的解决方案真的是最简单的吗?
发布于 2012-11-17 14:38:44
“神圣标准”提供的std::declval就是为了这个目的:
typedef decltype (declval<T1>()+declval<T2>()) sum_type;包括<utility>报头。
发布于 2012-11-17 14:38:35
您可以这样做:
typedef decltype(*(T1*)0 + *(T2*)0) sum_type; https://stackoverflow.com/questions/13428263
复制相似问题