类型定义语句是否相等
Are type definition statements equal?
我需要导出模板专用化。
以下定义是否相等
typedef std::vector<int> MY_API MyIntArray; // (1)
template class MY_API std::vector<int>; // (2)
typedef std::vector<int> MyIntArray;
常见的MY_API
宏定义类似于#define MY_API __declspec(dllexport)
。
另一个问题是——模板专业化发生在typedef std::vector<int> MyIntArray;
吗
我已经看到了一堆关于跨模块/dll边界使用STL
类和潜在问题的问题
否--typedef
是#define
的一个稍微(但只是稍微)智能的版本,它将指定的名称等同于指定的类型。它在编译器的符号表中添加一个条目,表示该名称代表该类型。
然而,typedef
只起到了这个作用。它具体地执行而不是实例化指定的类型,因此它不等同于所讨论的模板的显式实例化。(至于为什么它明确不实例化类型:首先,因为你可以创建一个不完整类型的typedef
,在类型完成之前无法实例化)。
相关文章:
- 是否可以使用if constexpr删除控制流语句
- 此增量后语句是否会导致未定义的行为?
- 如果中的多个语句是否与多个 if 相同?
- 任意大小的 constexpr 数组是否可以用作 switch 语句中的案例?
- 这些语句是否等效(静态变量、常量变量和泛型)
- 尝试使用 indexOf 创建一个 if 语句来检查字符串是否包含字符.有一点麻烦
- 我的 if 语句打印在我的 while 循环中的每个 if 语句上,无论它是否为假
- 是否可以对任何语句字符串使用预准备语句?
- 是否可以在 "if" 语句中声明变量?
- 是否可以在C++中使用三元运算符在 if 语句中选择比较运算符?
- (C++)for循环中的空初始语句是否保存所有编译器中变量的上一次初始化
- 复制构造函数和复制赋值运算符是否应具有相同的语句?
- 如果语句表达式调用函数,则需要测试是否为 true
- 在任何案例之前,在 switch 语句中的使用声明是否合法?
- 是否可以编写C++不使用任何条件语句交换输入的函数?
- 在返回语句中构造对象时,std::move() 是否有助于或阻止 RVO?
- "If Else"语句缩进在C++中是否重要?
- gcc/g 是否会生成if(false)语句的主体
- 是否可以删除此条件语句
- 是否修改其声明语句中的变量定义良好