当我使用 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/