首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当ParamType既不是指针也不是引用时自动类型推断

当ParamType既不是指针也不是引用时自动类型推断
EN

Stack Overflow用户
提问于 2018-03-22 15:57:37
回答 1查看 344关注 0票数 1

我提到Scott“更有效的C++”用于自动类型的扣减。指出is的工作方式与模板类型推导相同,其中有3种情况。我的问题属于案例3(当ParamType不是指针或引用时),但结果与所描述的不匹配。

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

int main (void)
{
   auto i = 2;
   const auto c = &i;

   *c = 4;

   std::cout << "i is " << i;
}

它应该起作用

代码语言:javascript
复制
template<typename T>
void f(const T param);

f(&i);   // int *

因此,这里的T应该与int *匹配,完整类型的param应该是const int *

但是,正如上面的程序所示,c不是const int *,而是int *

有人能解释一下我在这里错过了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-22 16:04:03

当你有

代码语言:javascript
复制
template<typename T>
void f(const T param);

T是一个指针类型,您没有const type *,而是type * const,因为您正在创建Tconst,而不是它所指向的。

这意味着

代码语言:javascript
复制
const auto c = &i;

是一个int * const,一个指向非常量整数的常量指针。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49433185

复制
相关文章

相似问题

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