Учитывая класс перечисления С++ 11, вложенный внутри нескольких пространств имен с длинными и уродливыми именами:
namespace
long_and_ugly
{
enum class
colour
{
red,
green,
blue
};
}
Могут ли быть сделаны псевдонимы из значений перечисления? С clang++ 3.5 можно сделать следующее:
using long_and_ugly::colour; // take all the values into the current namespace
using long_and_ugly::colour::red; // take only 'red' into the current namespace
function_taking_colour_argument( red ); // instead of fully referring to the value
g++ 4.9, однако, жалуется. Я не могу скопировать его сообщение об ошибке, потому что я не могу получить доступ к этому коду, но он явно жаловался на использование директивы use или декларации. Я также пробовал это:
using red = long_and_ugly::colour::red;
Но он тоже потерпел неудачу. Прошу прощения за то, что вы не вставляете ошибки. Тем не менее, я считаю, что вы должны иметь возможность воспроизвести его.
Вопрос (ы)
-
Можно ли объявить псевдонимы значениям перечисления в стандартном С++ 11, или я использовал расширение clang?
-
Если это так, то какой правильный синтаксис?