- 1
- 2
- 3
- 4
- 5
- 6
- 7
// OK
class foo {};
void foo();
// не ОК: error: 'void bar()' redeclared as different kind of symbol
namespace bar {}
void bar();
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+1
// OK
class foo {};
void foo();
// не ОК: error: 'void bar()' redeclared as different kind of symbol
namespace bar {}
void bar();
"Двойные стандарты"
g0_1494076596974 22.03.2018 06:59 # −1
inho 22.03.2018 09:53 # −1
Dummy00001 22.03.2018 17:41 # +2
но если подумать - то и не удивительно. класс есть тип. имена типов и функций - используются в разных контекстах и лежат в компилере в разных списках. но имя нэймспэйса может использоватся во всех контекстах, почему компилер и жалуется на конфликт.
Elvenfighter 22.03.2018 20:47 # 0
А вот имя функции подразумевает собой некое значение (адрес функции). И я не могу придумать случая, когда не можно было бы из контекста определить что есть bar -- неймспейс или функция.
Dummy00001 23.03.2018 01:35 # 0
аналогично. данной классике `::a::b::c::d() { }` это тоже не помогает.
но как по мне тот же `typename` тоже излишен - но для чего-то же его ввели, и требуют.