首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将引用类型转换为值类型?

如何将引用类型转换为值类型?
EN

Stack Overflow用户
提问于 2015-02-25 13:46:14
回答 2查看 4.7K关注 0票数 4

我试图使用新的decltype关键字将一些代码移到模板中,但是当与取消引用的指针一起使用时,它会生成引用类型。SSCCE:

代码语言:javascript
复制
#include <iostream>

int main() {
    int a = 42;
    int *p = &a;
    std::cout << std::numeric_limits<decltype(a)>::max() << '\n';
    std::cout << std::numeric_limits<decltype(*p)>::max() << '\n';
}

第一个numeric_limits工作,但第二个抛出一个value-initialization of reference type 'int&'编译错误。如何从指向该类型的指针中获取值类型?

EN

回答 2

Stack Overflow用户

发布于 2015-02-25 13:58:27

如果您要从指针转到指向类型,那么为什么要取消引用呢?只是,嗯,移除指针:

代码语言:javascript
复制
std::cout << std::numeric_limits<std::remove_pointer_t<decltype(p)>>::max() << '\n';
// or std::remove_pointer<decltype(p)>::type pre-C++14
票数 7
EN

Stack Overflow用户

发布于 2015-02-25 13:49:12

您希望删除引用以及潜在的constness,所以您可以使用

代码语言:javascript
复制
std::numeric_limits<std::decay_t<decltype(*p)>>::max()
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28720632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档