【发布时间】:2016-09-28 16:59:51
【问题描述】:
在 C++ 中多次声明相同的 using 别名是否合法?我有一个模板库,其中一个头文件用作“公共” - 它包含所有模板类声明和别名,然后是“实现”文件(不是字面意义上的,这些包含模板类的定义)。公共头文件在其末尾包含所有实现头。
不可能在实现文件中包含公共头文件,因为这会导致循环依赖。但是,我想使用在实现文件内部的头文件中声明的模板别名。
例子:
“公共”标题:
using true_type = logical_constant<true>;
using false_type = logical_constant<false>;
“私有”实现文件:
using true_type = logical_constant<true>;
using false_type = logical_constant<false>;
只要两者都使用别名 alias 同样的东西,这样合法吗?这个简单的例子在 MSVC 14 中对我有用,但是当我尝试以同样的方式使用更复杂的别名时,编译器会报错。
【问题讨论】:
-
您能否提供一个“更复杂的别名”的示例以及您的编译器提供的确切投诉?
-
请提供实际问题代码的minimal reproducible example。