簡體   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