溫馨提示×

C++ decay中如何處理自定義類型

c++
小樊
112
2024-08-29 23:58:52
欄目: 編程語言

在 C++ 中,std::decay 是一個模板元函數,用于將給定的類型轉換為其“衰減”后的類型。這通常用于從函數參數類型、引用類型或表達式類型中提取基礎類型。對于自定義類型,std::decay 的行為與內置類型相同。

以下是 std::decay 的基本用法:

#include<iostream>
#include <type_traits>

template<typename T>
void print_decayed_type() {
    using decayed_type = typename std::decay<T>::type;
    std::cout<< typeid(decayed_type).name()<< std::endl;
}

class MyClass {};

int main() {
    print_decayed_type<MyClass>();             // 輸出: MyClass
    print_decayed_type<MyClass&>();            // 輸出: MyClass
    print_decayed_type<const MyClass&>();      // 輸出: MyClass
    print_decayed_type<MyClass&&>();           // 輸出: MyClass
    print_decayed_type<MyClass*>();            // 輸出: MyClass*
    print_decayed_type<const MyClass*>();      // 輸出: MyClass const*
    print_decayed_type<MyClass[3]>();          // 輸出: MyClass*
    print_decayed_type<MyClass(int)>();        // 輸出: MyClass (*)(int)
    print_decayed_type<int MyClass::*>();     // 輸出: int MyClass::*
    print_decayed_type<int (MyClass::*)()>();   // 輸出: int (MyClass::*)()

    return 0;
}

在這個例子中,我們定義了一個名為 MyClass 的自定義類型,并使用 print_decayed_type 函數模板打印其衰減后的類型??梢钥吹?,對于自定義類型,std::decay 的行為與內置類型相同。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女