泛型类型初始化的模糊性
Ambiguity in generic type initialization
使用下面这个简单的模板函数:
template<typename T>
double Average(T tArray[], int nElements)
{
T tSum = T(); // tSum = 0
for (int nIndex = 0; nIndex < nElements; ++nIndex)
{
tSum += tArray[nIndex];
}
return double(tSum) / nElements;
}
我已经将第一行更改为T tSum()
,它没有编译,因为编译器认为tSum是一个函数,不能在for循环中的+操作符中使用。你能告诉我以下这些泛型类型的初始化有什么区别吗?
- Type var = Type();
- 类型var ();
我认为有可能替换这些行,考虑到例如int var()
和int var = int()
是相同的!
Type var();
声明函数。Type var = Type()
是你想要的。
见http://en.wikipedia.org/wiki/Most_vexing_parse
在c++ 11中,您可以使用Type var{};
相关文章:
- 是否可以初始化不可复制类型的成员变量(或基类)
- C++使用整数的压缩数组初始化对象
- C++初始化基类
- 无法初始化已知大小的矢量指针,该大小不会因多态性而更改
- 类内非静态字段初始化 + 对象池 - >降低可维护性/可读性
- 如何初始化具有非易失性结构的挥发性结构
- 是一种基本类型的挥发性初始化,可观察到的行为
- 嵌入式 C++:在 C++ 中初始化易失性类型结构
- 使用具有多态性的引用时初始化无效
- 恒常性添加无效?错误:无法使用字符**初始化常量字符**
- 返回值的初始化应忽略自动对象的恒常性
- 为什么我们不能用右值易失性 int&&&初始化对 const int 的引用?
- 无法将int转换为模糊初始化
- 有没有可能创建一个数组,在初始化时我们不知道元素的数量?(处理遗传/多态性)
- C++ - 多态性:使用派生类初始化容器类
- 涉及模板化转换操作符和隐式复制构造函数的模糊性
- 对引用使用多态性.非const引用的无效初始化
- 为什么易失性静态成员初始化会生成重新定义编译错误
- 泛型类型初始化的模糊性
- c++中使用多态性初始化的预期行为是什么?