- 1
- 2
- 3
- 4
- 5
- 6
#define EXPECT_EQ(expected, actual) \
assert(expected == actual);
int main() {
EXPECT_EQ(std::array<char, 3>(), std::array<char, 3>());
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−18
#define EXPECT_EQ(expected, actual) \
assert(expected == actual);
int main() {
EXPECT_EQ(std::array<char, 3>(), std::array<char, 3>());
}
Макрошаблоно-проблемы. Inspired by gtest
Спойлер:
error: macro "EXPECT_EQ" passed 4 arguments, but takes just 2
EXPECT_EQ(std::array<char, 3>(), std::array<char, 3>());
ASD_77 05.04.2017 17:04 # +1
вот где кульный асерт
roman-kashitsyn 05.04.2017 17:11 # +2
положим
std::array < char => false
3 > () => true
std::array < char => false же
3 > () => true же
1024-- 05.04.2017 20:27 # +1
Включайте подсветку синтаксиса!
inhoguest 05.04.2017 20:45 # 0
1024-- 05.04.2017 20:50 # 0
inhoguest 05.04.2017 20:51 # 0
1024-- 05.04.2017 20:57 # +1
Интуитивно понятно, что массив больше какого-то мелкого символа, а тройка больше джвух скобок, похожих на ноль.
Хотя, может тут сравнения над типами. std::array - функция над типом, она больше простого типа char; а кортеж из одного элемента 3 больше кортежа из нуля элементов ().
Antervis 05.04.2017 20:43 # +3
CHayT 05.04.2017 20:59 # 0
gost 06.04.2017 15:40 # +2
1024-- 06.04.2017 15:44 # +3
bormand 06.04.2017 17:16 # +1