[英]C++ traits for non-template function parameters?
在功能模板的定義中,模板參數的實例通常是未知的。 類型特征可以用於在編譯時獲取一些信息。 例如,這是一個簡單的is_pointer
應用程序:
template <typename T>
void foo(T p) { cout << is_pointer<T>::value << endl; }
我的問題是:在非模板函數中是否存在過類似特征的編譯時函數可以提供有用信息的情況?
是:
#include <iostream>
#include <limits>
int main()
{
std::cout << "Max value of an int on your platform is "
<< std::numeric_limits<int>::max() << "\n";
}
這是我想到的第一個例子。 我敢肯定還有很多其他人。 更一般而言,它允許鍵入時鍵入的編譯時“查找”。 顯然,在非模板情況下,使用宏定義( INT_MAX
等)可以實現相同的效果。
除非檢查有關基本類型的編譯時間信息,例如整數類型的max和min或其他類型。
類型特征的真正好處是可以通過使用sfinae添加控制流來輔助模板元編程,或者在使用錯誤類型時產生更好的錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.