C++ 通用参考忽略顶级cv限定符

C++ 通用参考忽略顶级cv限定符,c++,templates,c++11,universal-reference,C++,Templates,C++11,Universal Reference,有谁能告诉我为什么univeral推荐信不符合顶级简历的要求?在下面的代码中,我希望在第二次和第三次函数调用时,const的输出将返回true #include <iostream> #include <type_traits> using namespace std; template<class T> void print(T const &value){ cout << "Printing from const &

有谁能告诉我为什么univeral推荐信不符合顶级简历的要求?在下面的代码中,我希望在第二次和第三次函数调用时,const的输出将返回true

#include <iostream>
#include <type_traits>

using namespace std;

template<class T>
void print(T const &value){
    cout << "Printing from const & method: " << value << endl;
}

template<class T>
void print(T const *value){
    cout << "Printing from const * method: " << *value << endl;
}

template<class T>
void f(T&& item){
    cout << "T is const: " << boolalpha << is_const<decltype(item)>::value << endl;

    print(std::forward<T>(item));
}


int main(){

    f(5);

    const int a = 5;
    f(a);

    const int * const ptr = &a;

    f(ptr);

    return 0;
}

正如R.Martinho指出的,引用没有顶级常量

要检查较低级别常数,可以使用:


正如R.Martinho指出的,引用没有顶级常量

要检查较低级别常数,可以使用:


cout引用从来没有顶级const.ahhh。确切地谢谢你能用const作为前缀吗?你指的是哪个函数调用?我如何检查低级const?引用从来没有顶级const.ahhh。确切地谢谢你能用const作为前缀吗?你指的是哪个函数调用?我如何检查低级const?
T is const: false
Printing from const & method: 5
T is const: false
Printing from const & method: 5
T is const: false
Printing from const * method: 5
cout << "T is const: " << boolalpha
     << is_const<typename remove_reference<decltype(item)>::type>::value
     << endl;