vladislav
15-20 где-то.
лол, это цена комнаты или студии на окраине города. Однушка стоит 20-25
сорри за офтоп
vladislav
больная тема)
Anton
vladislav
не снимешь на авито ничего
юзайте stopagent или паблик в вк уютное гнёздышко.
zi
Mikhail
ребят просветите плз. почему такой код по разному принтует в зависимости от компилятора
clang++ -std=c++11 -Wall -o ./str48 ./str48.cpp && ./str48
lambda ret: I'm lambda. val : 3
3
и
g++ -std=c++11 -Wall -o ./str48 ./str48.cpp && ./str48
I'm lambda. val : 3
lambda ret: 3
Mikhail
int func (int x) {
std::cout << u8R"(I'm lambda. val : )" << x << std::endl;
return x;
}
int main() {
std::cout << "lambda ret: " << func(3) << std::endl;
}
Mikhail
версии:
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
clang version 3.8.0-2ubuntu4 (tags/RELEASE_380/final)
Mikhail
как по мне эта баг, по идее приоритет func() выше чем «
Mikhail
тем более в любом случае поведение должно быть одинаково в обоих
Mikhail
либо какое то шаманство с опимизацией самого компилятора (хотя явно не указывал флаг)
🐙 Antony
Это исправлено в с++17. До С++17 такое поведение является валидным
Tom
А у меня одно и то же выдает
Tom
Tom
GCC видать под С++17 начал подстраиваться
Tom
Начиняя с 7.1 работает
🐙 Antony
Туда даже прием есть: http://en.cppreference.com/w/cpp/language/eval_order
cout << i << i++; // undefined behavior until C++17
🐙 Antony
Evaluation order guarantees http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0145r3.pdf
🐙 Antony
GCC видать под С++17 начал подстраиваться
один из разработчиков GCC был очень рад тому, что evaluation order guarantees приняли, так как это чинило у него парочку флапающих тестов, при том без просадки производительности
Mikhail
🐙 Antony
Вот так проще:
In summary, the following expressions are evaluated in the order a, then b, then c, then d:
a.b
a->b
a->*b
a(b1, b2, b3)
b @= a
a[b]
a << b
a >> b
Mikhail
с с++17 флагом ничего не поменялось
Mikhail
g++ -std=c++17 -Wall -o ./str48 ./str48.cpp && ./str48
I'm lambda. val : 3
lambda ret: 3
мб старый компилятор просто
🐙 Antony
Учтите, что порядок вычисления аргументов функции до сих пор не определён, поэтому в
a(b1, b2, b3)
b2 может вычислиться до b1 и до b3
Mikhail
Tom
Mikhail
Mikhail
мб алиас какой нибудь на 1z
Mikhail
Александр
Kirill
🦥Alex Fails
убью превентивно похожего на спамера.
Крылатый
Крылатый
Сомниваюсь, что спамер
🦥Alex Fails
он в 9 групп добавился
Крылатый
🦥Alex Fails
во. приперся в pro.asm
Крылатый
Ага, вижу.
Ivan
Кто хочет пораковать?)
Ivan
Мне тут друг интересную задачку подкинул: http://ideone.com/9hZO4H
Ivan
Что здесь происходит?
Ivan
Там есть интересная вещь...)
доня.
какой-то perl
ep
Это с конкурса самого запутанного C кода?
Ivan
доня.
Vladislav
clang-format существенно упрощает задачу http://ideone.com/SUbLf9
Ivan
Ахахаха
Evgenii
Ivan
ep
Ivan
Я руками всё парсил 😢
Ivan
С телефона 😞
ep
Ivan
Тренинг
Vladislav
Evgenii
(нет)
Evgenii
Ivan
Окей, обратите внимание на 11 строку уже в отформатированном коде http://ideone.com/SUbLf9
Vladislav
а триграфы разве еще не выпилили из языка?
Vladislav
а, тут не они, похоже
Александр
Ivan
Александр
Да. В точности. Тут смесь меток, лямбд, расширения gcc для взятия адресов меток и всё
Ivan
И у нас победитель!
Ivan
Но я не видел этой задачи
Vladislav
Vladislav
наркоманы
Александр
Александр
Сейчас найду, я ж сам это расписывал..
Александр
Александр
О, ещё расширение в виде исполняемых блоков ({ ... })
Ivan
Александр
Разговор об этом примере часто заходит, надо хештег какой-то запилить
Александр
Александр