我提到Scott“更有效的C++”用于自动类型的扣减。指出is的工作方式与模板类型推导相同,其中有3种情况。我的问题属于案例3(当ParamType不是指针或引用时),但结果与所描述的不匹配。
#include <iostream>
int main (void)
{
auto i = 2;
const auto c = &i;
*c = 4;
std::cout << "i is " << i;
}它应该起作用
template<typename T>
void f(const T param);
f(&i); // int *因此,这里的T应该与int *匹配,完整类型的param应该是const int *。
但是,正如上面的程序所示,c不是const int *,而是int *。
有人能解释一下我在这里错过了什么吗?
发布于 2018-03-22 16:04:03
当你有
template<typename T>
void f(const T param);T是一个指针类型,您没有const type *,而是type * const,因为您正在创建T是const,而不是它所指向的。
这意味着
const auto c = &i;是一个int * const,一个指向非常量整数的常量指针。
https://stackoverflow.com/questions/49433185
复制相似问题