shared_ptrs的is_const类型特征。为什么这些例子不是常量?

时间:2017-03-11 01:40:19

标签: c++ c++14 shared-ptr

我正在做一个小实验来测试共享指针和指针本身引用的数据的常量。我写了以下代码:

#include <iostream>
#include <vector>
#include <memory>
#include <type_traits>

using std::cout;
using std::endl;
using std::vector;
using std::shared_ptr;

auto testfun(const shared_ptr<const vector<int>> &vec){
    cout<<std::is_const<const shared_ptr<const vector<int>>&>::value<<endl; // not const?
    cout<<std::is_const<decltype(vec)>::value<<endl;  // not const?
    cout<<std::is_const<decltype(*vec)>::value<<endl; // not const?
    cout<<std::is_const<decltype(&vec)>::value<<endl; // not const?
}

int main(){
    const vector<int> myvec = {3,3,3,3,3,3};
    const shared_ptr<const vector<int>> vec = 
         std::make_shared<const vector<int>>(myvec);
    cout<<std::is_const<decltype(vec)>::value<<endl; // is const
    testfun(vec);
    return 0;
}

此代码的输出为:

1
0
0
0
0

有人可以解释为什么最后四张支票不符合const的条件吗?我特别好奇为什么std::is_const<decltype(vec)>没有const类型特征。

0 个答案:

没有答案