为什么以下不会产生编译错误?
template<typename T>
const T testFunc()
{
return T();
}
float* ptr = testFunc<float*>(); // ptr is not const - should be a compiler error!
在这个例子中,testFunc()应该返回一个常量float *,所以当我尝试将它分配给非const float *时,不应该有编译错误吗?
答案 0 :(得分:4)
你的期望是错误的,返回的指针将是const,而不是指向的对象。专业化相当于:
float * const testFunc<float*>();
而不是:
float const * testFunc<float*>();
在您的示例中,调用端的代码是从