跳到主要內容

C++ 不用 typeid 印出型別名稱

C++ 不用 typeid 印出型別名稱

方便檢驗型別的小技巧

編譯期印出

template<typename T>
void print_type();

int main() {
  print_type<int>();
  return 0;
}

輸出

undefined reference to `void print_type<int>()'

執行期印出

template<typename T>
void print_type() {
  cout << __PRETTY_FUNCTION__ << endl; // GCC & clang extension
}

輸出

void print_type() [with T = int]

MSVC 的話用 __FUNCSIG__ 取代 __PRETTY_FUNCTION__


Written with StackEdit.

留言