@SanderDeDyckerが述べたように、cv修飾子は無視されます。しかし、ポインタ用ではありません!
例:
#include <iostream>
#include <typeinfo>
int main()
{
int bar = 1;
const int cbar = 10;
volatile int vbar = 10;
const volatile int cvbar = 1000;
int &rbar = bar;
const int &crbar = bar;
volatile int &vrbar = bar;
const volatile int &cvrbar = bar;
int *pbar = &bar;
const int *cpbar = &bar;
volatile int *vpbar = &bar;
const volatile int *cvpbar = &bar;
const volatile int * const cvpcbar = &bar;
const volatile int * const volatile cvpcvbar = &bar;
int&& rrbar = 894354;
const int&& rrcbar = 894354;
std::cout << typeid(bar).name() << '\n';
std::cout << typeid(cbar).name() << '\n';
std::cout << typeid(vbar).name() << '\n';
std::cout << typeid(cvbar).name() << '\n';
std::cout << typeid(rbar).name() << '\n';
std::cout << typeid(crbar).name() << '\n';
std::cout << typeid(vrbar).name() << '\n';
std::cout << typeid(cvrbar).name() << '\n';
std::cout << typeid(pbar).name() << '\n';
std::cout << typeid(cpbar).name() << '\n';
std::cout << typeid(vpbar).name() << '\n';
std::cout << typeid(cvpbar).name() << '\n';
std::cout << typeid(cvpcbar).name() << '\n';
std::cout << typeid(cvpcvbar).name() << '\n';
std::cout << typeid(rrbar).name() << '\n';
std::cout << typeid(rrcbar).name() << '\n';
std::cout << "\n\n";
}
出力
int
int
int
int
int
int
int
int
int * __ptr64
int const * __ptr64
int volatile * __ptr64
int const volatile * __ptr64
int const volatile * __ptr64
int const volatile * __ptr64
int
int
ご覧のとおり、ポインターが関係する5つのケースでは、cv修飾子は無視されません。出力は、MSVSまたはg++とC++ 11、C ++ 14、C++17で同じです。