我試圖從可變參數模板類型列表中獲取最大類型。我得到意想不到的結果:從可變類型列表中獲取最大類型
// Bigger between two types
template<typename T1, typename T2>
using Bigger = std::conditional_t<sizeof(T1) >= sizeof(T2), T1, T2>;
// Recursion helper
template<typename...>
struct BiggestHelper;
// 2 or more types
template<typename T1, typename T2, typename... TArgs>
struct BiggestHelper<T1, T2, TArgs...>
{
using Type = Bigger<T1, BiggestHelper<T2, TArgs...>>;
};
// Exactly 2 types
template<typename T1, typename T2>
struct BiggestHelper<T1, T2>
{
using Type = Bigger<T1, T2>;
};
// Exactly one type
template<typename T>
struct BiggestHelper<T>
{
using Type = T;
};
template<typename... TArgs>
using Biggest = typename BiggestHelper<TArgs...>::Type;
這裏的結果的一個例子:
sizeof(double) -> 8
sizeof(Biggest<int, char, long, std::string, long long, double>) -> 4
我在做什麼錯?我希望返回一個大於4的數字。
([testcase](http://coliru.stacked-crooked.com/a/d3a43d2f54533f76)) – 2014-10-18 18:02:15