return类型是类中的变量

Jas*_*son 6 c++

我正在寻找C++参考,我看到了

template <size_t I, class... Types>
typename tuple_element< I, tuple<Types...> >::type const& get(const tuple<Types...>& tpl) noexcept;
Run Code Online (Sandbox Code Playgroud)

而我无法理解的是返回类型,typename tuple_element< I, tuple<Types...> >::type const&意味着什么?

我的交互是它返回一个常规类型的const引用tuple_element::type,但我认为这tuple_element::type就像下面

Class A{
  public:
      int B;
}
A::B = .........;
Run Code Online (Sandbox Code Playgroud)

但为什么它可以用作一种类型?我不明白.

Mar*_*cia 7

typetypename tuple_element< I, tuple<Types...> >::type不是一个变量.它是另一种类型(tuple_element< I, tuple<Types...> >)中的类型.

引用其他类型的类型可以通过使用::范围解析运算符来完成,就像在类或命名空间中引用变量或函数时一样.

例:

namespace my_namespace {

    struct my_type {
        typedef int some_type;  // some_type here is an alias for int (both are types)
    };   

}

int main() {
    my_namespace::my_type::some_type some_variable;
}
Run Code Online (Sandbox Code Playgroud)