En fonction main
, je créé une variable de pointeur const int
, l'assigner à une variable déclarée par auto&
. Ensuite, en utilisant le decltype(x)
pour vérifier le type. Je m'attendais à ce que le type soit const int*
. Mais is_same
renvoie false
.Qu'est-ce que ce type est auto & x = const int *?
int main()
{
int a = 10;
const int * cp_val= &a;
auto& x = cp_val;
bool is_const_int_ptr = std::is_same<decltype(x), const int *>::value; // returns 0
// *x = 100; // error: assignment of read-only location '* x'
}
Mais si j'ajoute la fonction d'aide suivante:
#include <boost/type_index.hpp>
template<typename T>
void print_type(T)
{cout << "type T is: "<< boost::typeindex::type_id_with_cvr<T>().pretty_name()<< '\n';}
Dans l'ensemble, j'invoque la fonction
print_type(x); // It returns int const*
me manque quelque chose dans std::is_same
-je?