[英]How to check the value of a template parameter?
我想根據模板參數中的值使用別名。 像這樣的東西:
If W > 32:
template<size_t W>
using int_t = My_Int<W, int64_t>;
Else:
template<size_t W>
using int_t = My_Int<W, int32_t>;
我也嘗試了 std::conditional,但沒有找到一個好的方法。我應該怎么做? 謝謝!
使用std::conditional
你會有
template<size_t W>
using int_t = std::conditional_t<(W > 32), My_Int<W, int64_t>, My_Int<W, int32_t>>;
其中My_Int<W, int64_t>
在W > 32
為真時使用,而My_Int<W, int32_t>
在其為假時使用。
是的,您可以使用std::conditional
,例如
template<size_t W>
using int_t = typename std::conditional<(W > 32), My_Int<W, int64_t>, My_Int<W, int32_t>>::type;
或者從 C++14 開始:
template<size_t W>
using int_t = std::conditional_t<(W > 32), My_Int<W, int64_t>, My_Int<W, int32_t>>;
請注意,您需要為條件W > 32
添加括號; 否則W
將被視為唯一的模板參數,這將不起作用,因為std::conditional
需要三個。
std::conditional_t
解決方案的少打字版本
template <std::size_t W>
using int_t = My_Int<W, std::conditional_t<(W > 32), int64_t, int32_t>>;
template<size_t W>
using int_t = std::conditional_t<(W > 32), My_Int<W, int64_t>, My_Int<W, int32_t>>;
將適用於 C++14。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.