c++ - typedef 中的 const 警告

标签 c++ warnings constants typedef

当我使用 icc 11 编译 C++ 程序时,它给出了这个警告:

warning #21: type qualifiers are meaningless in this declaration
typedef const direction_vector_ref_t direction_vector_cref_t;

它说 const只是毫无意义。我对此很好奇,因为如果这个 typedef展开它会变成const array<double,3>&const绝对有意义。为什么会发出这个警告?

最佳答案

direction_vector_ref_t,我认为它是一个引用。引用在设计上是 const 的,因此将 const 添加到引用中是没有意义的。您可能想要的是对 const 对象进行引用,这不能通过 typedef 来完成。您将不得不重复稍微修改过的 typedef 定义。

澄清一下:

typedef T& ref;
typedef const T& cref;
typedef const ref cref;

最后一行与第一行相同,而不是第二行。 Typedef 不是标记粘贴,一旦您将 T& 键入为 ref,则 ref 指的是对 T 类型的引用。如果向其添加 const,则会得到对 T 类型的 const 引用,而不是对 const T 类型的引用。

关于c++ - typedef 中的 const 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7380729/

相关文章:

iphone - NSURLConnection 的 Xcode 4 警告 "Expression result unused”

ios - UISearchBar textDidChange 创建错误 : There are visible views left after reusing them all: { (null) = (null); }

javascript - 什么是暂时死区?

c++ - 在 C++ 中使所有类型默认为常量

C++ - 模板化均匀分布?

c++ - C++ 中的 For Loop 变量递增位置的区别

c++ - 来自同一祖 parent 的多重继承 - 合并实现?

c++ - Qt:如何创建一个可滚动的、自绘的小部件

visual-studio-2010 - 更改输出文件设置时警告 MSB8012

javascript - 为什么函数声明中的常量声明不会抛出错误?