繁体   English   中英

C ++“使用”别名的多个定义

[英]C++ multiple definitions of 'using' alias

在C ++中using别名多次声明相同是否合法? 我有一个模板库,其中一个头文件用作'public' - 它包含所有模板类声明和别名,然后是'implementation'文件(不是字面意义上的,它们包含模板类的定义)。 公共头文件包括其末尾的所有实现头。

不可能在实现文件中包含公共头,因为这会导致循环依赖。 但是,我想在实现文件中使用头文件中声明的模板别名。

例:

'public'标题:

using true_type = logical_constant<true>;
using false_type = logical_constant<false>;

'私人'实施文件:

using true_type = logical_constant<true>;
using false_type = logical_constant<false>;

只要两个使用别名别名相同的东西,这是合法的吗? 这个简单的例子在MSVC 14中对我有用,但是当我尝试以相同的方式使用更复杂的别名时,编译器抱怨道。

在C ++中使用别名多次声明相同是否合法?

是的,这是合法的。

using ... = ...;别名声明 using ... = ...; 语法是声明typedef的更有趣的方式。 因此,只要它们不将别名声明为不同类型,就可以毫无问题地重复它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM