【问题标题】:How to use typename in c++? [duplicate]如何在 C++ 中使用类型名? [复制]
【发布时间】:2014-01-07 14:39:32
【问题描述】:

我看过C++入门书,看不懂下面的代码:

typedef typename std::vector<int>::size_type size_type;

你能帮我解释一下typename在这里的用法吗?

【问题讨论】:

  • 它称为依赖类型,typename关键字是一个语法消歧器,用于区分函数声明。已经有很多关于它的问题。 stackoverflow.com/questions/610245/…
  • 注意这里完全没必要。
  • 明确一点:您确实不需要在这里需要typename。你template &lt;class T&gt; struct Foo { typedef typename std::vector&lt;T&gt;::size_type size_type; };中需要它

标签: c++ typename


【解决方案1】:

你可以这样阅读typedef typename std::vector::size_type size_type

typedeftypename std::vector::size_typesize_type,就像typedef __int64 INT64

为什么我们需要typename 而不是std::vector::size_type?它只是告诉编译器std::vector::size_type 是一种类型而不是普通的类成员。它用于消歧。

但我认为也许某些编译器可以自动检测 std::vector::size_type 是一种类型。

所以,typedef 只是为现有类型创建一个别名,typename 告诉编译器 std::vector::size_type 是一个类型而不是普通类成员。

【讨论】:

    猜你喜欢
    • 2021-11-26
    • 1970-01-01
    • 1970-01-01
    • 2018-01-04
    • 1970-01-01
    • 2017-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多