
Ostap
30.03.2018
19:39:12
New wave

FailsBot
30.03.2018
19:50:12
∧_∧
( ・ω・。)つ━☆・*。
⊂ ノ ・゜+.
しーJ °。+ *´¨)
.· ´¸.·*´¨) ¸.·*¨)
(¸.·´ (¸.·'* ☆

? Sild
30.03.2018
19:50:40
что, это тоже в 21 стандарте будет компилиться?

Olesya
30.03.2018
20:25:59
это Брагин. у него есть канал на ютубе

Google

Olesya
30.03.2018
20:26:37
https://www.youtube.com/channel/UCFPPiFWtjf-y7cnUsjSeWxw
вот собсна канал и там даже первые лекции есть

Matwey
30.03.2018
20:32:01

Ostap
30.03.2018
21:57:09
Zen of C++

Nikita
31.03.2018
06:08:43
Ребят, использую GTest, при написании ASSERT_EQ :
ASSERT_EQ(stream::Stream(Gen()) | map([](auto &&v){ return v * v; }) | nth(0), 21 * 21);Вываливается ошибка компиляции, жалуется на лямбду
lambda expression in an unevaluated operandА если написать ASSERT_THAT
ASSERT_THAT(stream::Stream(Gen()) | map([](auto &&v){ return v * v; }) | nth(0), 21 * 21);То всё замечательно работает.
Есть ли семантическая разница для простого сравнения значений между ASSERT_EQ и ASSERT_THAT? Если нет, то нафиг нужен ASSERT_EQ?

Vladislav
31.03.2018
06:14:44

Nikita
31.03.2018
06:16:06
хм, ну тест нормально выполняется и проходит, причём если 21 * 21 заменить на другое значение то тест фейлится
(как и должно быть, разумеется)

Vladislav
31.03.2018
06:16:25
загадочно
из документации: Asserts that value matches matcher
а матчеры бывают встроенные либо определяются через MATCHER(...)

Nikita
31.03.2018
06:18:43
мож есть какой то дефолтный для интов

Vladislav
31.03.2018
06:20:08
а stream это вот эти? http://jscheiny.github.io/Streams/

Google

Nikita
31.03.2018
06:20:15
не
это мои
ещё прикол в том, что если лямбду передать по lvalue ссылке, то всё работает и с ASSERT_EQ
а ошибка про lambda expression in an unevaluated operand вываливается одна и та же что в gcc что в clang
так что на багу компилятора непохоже

Ilia
31.03.2018
06:30:35

Nikita
31.03.2018
06:32:33
лямбда вызовется
сама по себе

Spoonson
31.03.2018
06:36:50
Ребят, использую GTest, при написании ASSERT_EQ :
ASSERT_EQ(stream::Stream(Gen()) | map([](auto &&v){ return v * v; }) | nth(0), 21 * 21);Вываливается ошибка компиляции, жалуется на лямбду
lambda expression in an unevaluated operandА если написать ASSERT_THAT
ASSERT_THAT(stream::Stream(Gen()) | map([](auto &&v){ return v * v; }) | nth(0), 21 * 21);То всё замечательно работает.
Есть ли семантическая разница для простого сравнения значений между ASSERT_EQ и ASSERT_THAT? Если нет, то нафиг нужен ASSERT_EQ?
я читал где-то, что в целом - все эти GE, EQ, NE, TRUE варианты ASSERT и EXPECT это изначальные варианты. Потом добавлится ASSERT_THAT и в целом все точно так же можно выразить в матчерах

Nikita
31.03.2018
07:02:24
Хм, спасибо

Vitaliy
31.03.2018
07:05:21
Начал копать в сторону имплементации pImpl и наткнулся на то, что на cpp_reference предлагают его оборачивать в propagate_const, пропосал на который есть, но последний раз рассматривался 3 года назад. В бусте такой штуковины не нашёл. Кто-нибудь в курсе вообще что там с этой штукой происходит ? )

Spoonson
31.03.2018
07:08:17
https://github.com/jbcoe/propagate_const репа автора если что
в exprerimental gcc уже должен быть

Vitaliy
31.03.2018
07:11:43
Но что толку от репы, если кажется, что там всё затухло)

Anatoly
31.03.2018
07:16:17

Vitaliy
31.03.2018
07:16:42
И вот сюда ещё можешь посмотреть http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4388.html