【发布时间】:2011-12-08 09:53:01
【问题描述】:
这段代码来自main:
Int<> a;
cout << typeid(Int<>::range_type).name();
使用 gcc 4.6.1 在代码块中编译时给出输出“x”。有什么理由吗?
template<class Int_T>
struct Best_Fit
{//evaluate it lazily ;)
typedef typename if_<std::is_signed<Int_T>::value,Signed_Type,Unsigned_Type>::type type;
};
template<class Int_T = int, typename Best_Fit<Int_T>::type Min_Range = std::numeric_limits<Int_T>::min(), typename Best_Fit<Int_T>::type Max_Range = std::numeric_limits<Int_T>::max()>
class Int {
public:
typedef decltype(Min_Range) range_type;
};
【问题讨论】:
-
我添加了 C++11,因为你使用了 C++11 的特性(
constexpr,decltype)。