C++ std::is_constの使い方
7833 ワード
『C++コード最適化とエンジニアリングレベル応用を深く応用する』の第3章を学習したとき、コードを実行し、印刷エラーがvs 2017とmingwで自分が実行した結果とは異なることを発見した(実行結果はコンパイラでの基準)
実行結果:
現在、運行結果に疑問を持っているのは
出力はfalseですが、これはなぜですか?
参照するconst制限子は、参照パラメータで値を変更できないことを意味します.他の方法で変更できます.例:
したがって、constが参照する値が実際に定数であるとは仮定できません.
参考:c+-C++なぜstd::is_const::値はfalseとして計算されますか?
#include
#include
int main()
{
std::cout << std::boolalpha;
std::cout << "is_const:" << std::endl;
std::cout << "int: " << std::is_const<int>::value << std::endl;
std::cout << "const int: " << std::is_const<const int>::value << std::endl;
std::cout << "const int&: " << std::is_const<const int&>::value << std::endl;
std::cout << "cont int* " << std::is_const<const int*>::value << std::endl;
std::cout << "int * const:" << std::is_const<int* const>::value << std::endl;
getchar();
return 0;
}
実行結果:
is_const:
int: false
const int: true
const int&: false
cont int* false
int * const:true
現在、運行結果に疑問を持っているのは
std::is_const<const int&>::value
出力はfalseですが、これはなぜですか?
参照するconst制限子は、参照パラメータで値を変更できないことを意味します.他の方法で変更できます.例:
#include
#include
int main()
{
std::cout << std::boolalpha;
int a = 1;
const int &b = a;
std::cout << b << std::endl; // 1
a = 2;
std::cout << b << std::endl; // 2
getchar();
return 0;
}
したがって、constが参照する値が実際に定数であるとは仮定できません.
参考:c+-C++なぜstd::is_const::値はfalseとして計算されますか?