加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 如何检查引用是否为const?

发布时间:2020-12-16 10:15:02 所属栏目:百科 来源:网络整理
导读:我正在为我的迭代器类型编写测试,并希望检查由begin()和cbegin()提供的解引用迭代器返回的引用分别是非const和const. 我尝试做类似以下的事情: – #include type_traits#include iostream#include vectorint main() { std::vectorint vec{0}; std::cout std
我正在为我的迭代器类型编写测试,并希望检查由begin()和cbegin()提供的解引用迭代器返回的引用分别是非const和const.

我尝试做类似以下的事情: –

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

int main() {
    std::vector<int> vec{0};

    std::cout << std::is_const<decltype(*vec.begin())>::value << std::endl;
    std::cout << std::is_const<decltype(*vec.cbegin())>::value << std::endl;
}

但是这两种情况都打印0.

有没有办法检查引用是否为const?

我可以使用C 11/14/17功能.

解决方法

删除引用以获取引用的类型以检查其常量.引用本身永远不会是const – 即使引用const也可以通俗地称为const引用:

std::is_const_v<std::remove_reference_t<decltype(*it)>>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读