Why does std::is_const::value evaluate to false?

后端 未结 2 1404
挽巷
挽巷 2020-12-11 17:23

This is a spin off of the question How to check if object is const or not?.

I was surprised to see the following program

#include 
#i         


        
2条回答
  •  隐瞒了意图╮
    2020-12-11 17:50

    Perhaps it'll be easier to understand with this example

    std::cout << std::is_const::value << "\n";  // pointer to const int
    std::cout << std::is_const::value << "\n";  // const pointer to int
    

    Output:

    false
    true
    

    The first type is a pointer to a const int, while in the second the int * itself is const. Hence it results in true while the former is false. Similarly, what you have a reference to a const int. If int& const were valid it'd result in true.

提交回复
热议问题