template <class _Ty, _Ty _Val> //----???
struct integral_constant {
static constexpr _Ty value = _Val;
using value_type = _Ty;
using type = integral_constant;
constexpr operator value_type() const noexcept {
return value;
}
_NODISCARD constexpr value_type operator()() const noexcept {
return value;
}
};
class _Ty我理解是個型別,很多模板示例都用typename,但后面緊跟了個_Ty _Val是什么意思?
我知道模板引數可以是型別,也可以是指定型別,比如
template<typename T , int MaxLen>
但這里有不少限制,比如MaxLen不能是浮點數,不能是型別別
但像
template <class _Ty, _Ty _Val>
到底是什么意思?
uj5u.com熱心網友回復:
帶引數的模板,其中第二個模板引數的型別是_Ty,比如用int實體化integral_constant, 就相當于integral_constant<int, int _Val>,用的時候得傳一個編譯期值進去,比如integral_constant<int, 10>, integral_constant<double, 3.14>這樣uj5u.com熱心網友回復:
Mark一下,沒見過uj5u.com熱心網友回復:
就如字面意思啊 沒有什么意思uj5u.com熱心網友回復:
類模板不光可以用型別引數_Ty,還可以用變數做引數如_Val,變數引數主要用于定義某些初始值或函式引數的默認值。參見《C++程式設計精要教程》第13章。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/203992.html
標籤:C++ 語言
上一篇:關于記憶體泄漏的問題
下一篇:C++陣列初始化
