c++11新特性之引用折疊


引用折疊的前提是出現了引用的引用,有點繞。我們不能直接定義引用的引用,但是可以間接定義。

通過類型別名或者通過模板參數間接定義,多重引用最終折疊成左值引用或者右值引用,多余的忽略

typedef int&& new_type;

new_type& ok;

這個時候就形成了類型折疊 類似於int&&& ok;最后折疊成int& ok;

template<typename T> void test(T&& t);

如果參數傳入一個引用類型例如int m=0;int& n=m;template<int&> test(n);這個時候也形成了引用折疊,最終參數保留了引用特性

template<typename T> void test6(T&& t)//傳入引用就會形成折疊
{
    printf("%d\n", t++);
}
int main(int narg, char**)
{
    typedef int&& new_int;
    int n = 0;
    new_int& a=n;//引用折疊int&&& 最終成為int&
    a = 10;
    printf("%d\n", n);

    test6(a);
    printf("%d\n", n);
    system("pause");
    return 0;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM