c++ - 可以在没有名称的情况下引用 C++ 数组类型吗?

标签 c++ arrays syntax

我一直在问自己一个非常简单的 C++ 问题,但似乎找不到明确的答案。是否可以在不给它命名的情况下引用 C++ 数组的类型?显然,我在这里谈论的是大小数组,而不是指针!

例如想象以下,其中ARRAY_T_Nn 的普通数组类型T 的元素:

template<class T, int n, bool useStd>
struct array :
    std::conditional<useStd, std::array<T,n>, ARRAY_T_N>
    {};

我可以使用一个简单的模板来定义 ARRAY_T_N :

template<class T, int n> struct array_t {
    typedef T type[n];
};
// ARRAY_T_N is array_y<T,n>::type

但我想知道是否有一种语法可以在 C++ 中原生表达这种类型?


另一种看待这个问题的方法是,通常类型可以绑定(bind)到一个名称:

BoundType variable; // variable declaration or function parameter
typedef BoundType  type_alias; // type aliasing

或者,它们可以匿名使用:

some_template<AnonType>  // template instantiation
using type_alias = AnonType; // C++11 type aliasing

在大多数情况下,对于给定的类型,两种形式都是 BoundTypeAnonType完全相同,如 int* ptrstd::vector<int*> .

但有时事情会有所不同,比如函数指针:int (*fptr)(int)std::vector<int(*)(int)> -- 这里是 BoundTypeAnonType对同一类型有不同的语法(你不能写,比如说 int(*)(int) fptr )

对于普通数组,C++ 是否定义了一个 AnonType语法?

最佳答案

你当然可以直接使用数组类型而不用typedef或类型别名,例如:

std::unique_ptr< int[6] > smart;

关于c++ - 可以在没有名称的情况下引用 C++ 数组类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20078026/

相关文章:

c++ - 即使后缀和赋值都重载,运算符重载也不起作用

javascript - 根据字符串的特定排列对字符串数组进行排序

c - Hitech C 语法

java - 您的 SQL 语法有误;查看与您的 MySQL 服务器对应的手册

c++ - 为什么来自 Bjarne 的 "Tour of C++"的代码有效?

c++ - 使用多线程处理 Qt 应用程序中的升压信号

具有预定义大小的 C++ 数组作为成员变量和内存泄漏

c - 添加带有指向数组指针的记录

ios - Swift:Force unwrap 是 nil 但没有崩溃......?

c++ - std::unique_ptr 和模板