2016-09-28 2 views
3

Является ли законным в C++ объявлять одно и то же имя using псевдоним несколько раз? У меня есть библиотека шаблонов, где один заголовочный файл используется как «общедоступный» - он содержит все объявления классов классов и псевдонимов, а затем файлы «реализации» (не в буквальном смысле, они содержат определения классов шаблонов). Открытый файл заголовка включает все заголовки реализации в конце.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>; 

Пока оба с использованием псевдонимов псевдонима же, это законно? Этот простой пример работал для меня в MSVC 14, но когда я пытался использовать более сложные псевдонимы одинаково, компилятор жаловался.

+0

Можете ли вы привести пример «более сложных псевдонимов» и точную жалобу, предоставленную вашим компилятором? – kdelaney

+0

Пожалуйста, предоставьте [mcve] фактического кода проблемы. – Barry

ответ

4

Является ли законным в C++ объявлять одно и то же использование псевдонима несколько раз?

Да, это законно.

псевдоним декларации с синтаксисом using ... = ...; является любитель способ объявить typedef. Следовательно, его можно повторять без каких-либо проблем, если они не объявляют псевдоним разными типами.

+0

До тех пор, пока я использую его только в области пространства имен, все должно быть в порядке? –

Смежные вопросы