
Constantine
25.07.2018
17:06:33
в std такие нельзя, хотя памятуя, что комитет - тролли, вполне могут принять
Andrey спасибо)

Andrey
25.07.2018
17:13:14
Andrey спасибо)
Не за что. Кстати, по результатом нашей предыдущей дискуссии у меня родился такой квиз:
Что выведет эта программа?
#include <type_traits>
#include <iostream>
std::true_type is_const(int const &) { return {}; }
std::false_type is_const(int &) { return {}; }
int main() {
int x = 0;
[y = x, x] {
std::cout << std::boolalpha
<< is_const(x).value << '\n'
<< is_const(y).value << '\n'
<< decltype(is_const(x))::value << '\n'
<< decltype(is_const(y))::value << '\n'
<< std::is_const_v<decltype(x)> << '\n'
<< std::is_const_v<decltype(y)> << '\n'
;
} ();
}
Подсказка: Clang, GCC и MSVC выдают разные ответы.
Логически объяснить (по крайней мере на моем уровне знаний), можно только результат MSVC.

Constantine
25.07.2018
17:14:35
я вангую, что в MSC будет все false)

Google

Aidar
25.07.2018
17:15:36
@antoshkka

Andrey
25.07.2018
17:15:56

Aidar
25.07.2018
17:16:00
Свежее мясо

Constantine
25.07.2018
17:16:42
в clang все true, если я правильно понял godbolt?

Aidar
25.07.2018
17:17:15
Так а
int a;
void foo() const{
decltype(a)//int&?
}

Constantine
25.07.2018
17:17:23
а, ой боже, оно может считать, что x это не const, а y это const

Andrey
25.07.2018
17:18:51

Constantine
25.07.2018
17:19:05
о_О
О_О

Andrey
25.07.2018
17:19:28
И вот это меня добивает — и clang и gcc дают разное в evaluated и non-evaluated контексте

Alexander Alprog
25.07.2018
17:21:47
а x и y хоть где-то влияет?

Google

Alexander Alprog
25.07.2018
17:22:24
> нет, первые 4 — true, что в общем-то логично
в msvc нет разницы между вызовами x и y получается. в clang тоже. в gcc есть разница?

Constantine
25.07.2018
17:22:49
#include <type_traits>
#include <iostream>
#include <array>
constexpr std::true_type is_const(int const &) { return {}; }
constexpr std::false_type is_const(int &) { return {}; }
int main() {
int x = 0;
[y = x, x] {
std::cout
<< is_const(x).value
<< is_const(y).value
<< decltype(is_const(x))::value
<< decltype(is_const(y))::value
<< std::is_const_v<decltype(x)>
<< std::is_const_v<decltype(y)>
;
} ();
}
а если вот так?
constexpr добавить, короче?
у меня чувство будто в gcc ответы 110101
в clang соответственно 110000

Andrey
25.07.2018
17:24:59
Это правильный ответ

Constantine
25.07.2018
17:25:55

Andrey
25.07.2018
17:25:57

Constantine
25.07.2018
17:26:23
прочитано!
пипец, вообще-то, согласен с призывом antony

Andrey
25.07.2018
17:32:22

Aidar
25.07.2018
17:32:24
комитет приди
порядок наведи

Antony
25.07.2018
17:49:11
Так что GCC ведёт себя верно
clang ведёт себя неверно для y
msvc ыообще не в теме
И да, это страшное место о котором в комитете знают, но стараются не гооврить об этом

Constantine
25.07.2018
18:09:33

Antony
25.07.2018
18:10:44

Google

Constantine
25.07.2018
18:11:37
Т.е. вообще почему в decltype выражении была выбрана & перегрузка в const функции-члене класса?
Это просто выглядит как баг независимо от

Xessao
25.07.2018
18:15:36
Ребята, не стоит вскрывать эту тему. Вы молодые, шутливые, вам все легко. Это не то. Это не исходники STL и даже не архивы GCC. Сюда лучше не лезть. Серьезно, любой из вас будет жалеть. Лучше закройте тему и забудьте, что тут писалось. Я вполне понимаю, что данным сообщением вызову дополнительный интерес, но хочу сразу предостеречь пытливых - стоп. Остальные просто не найдут.

Constantine
25.07.2018
18:17:54
@antoshkka https://godbolt.org/g/82KU6V яннп, но это определенно крякает как баг

Александр
25.07.2018
18:18:00
Ох, какие темные, ужасные дебри

Constantine
25.07.2018
18:19:53
выглядит, будто в decltype выражении clang и gcc банально неправильно выполняют overload resolution в этом примере

Xessao
25.07.2018
18:20:24

Александр
25.07.2018
18:20:48

Xessao
25.07.2018
18:21:12

Александр
25.07.2018
18:22:09


Constantine
25.07.2018
18:22:42
Ребята, не стоит вскрывать эту тему. Вы молодые, шутливые, вам все легко. Это не то. Это не исходники STL и даже не архивы GCC. Сюда лучше не лезть. Серьезно, любой из вас будет жалеть. Лучше закройте тему и забудьте, что тут писалось. Я вполне понимаю, что данным сообщением вызову дополнительный интерес, но хочу сразу предостеречь пытливых - стоп. Остальные просто не найдут.
ВСЁ UB, ВСЁ В НОГУ, МИНУС НОГА, ЗНАКОВОЕ ЦЕЛОЧИСЛЕННОЕ ПЕРЕПОЛНЕНИЕ ПРОБИВАЕТ НОГУ, ПЕРЕГРУЖЕННЫЙ ОПЕРАТОР, НАПИСАТЬ НАДО ХОТЯ БЫ HELLO WORLD, SFINAE КОД АЙАЙАЙАЙ КАКОЙ ЖЕ TWO PHASE NAME LOOKUP У ТОЛСТОЙ СКАТИНЫ, СМОТРИТ ВАРНИНГИ КОМПИЛЯЦИИ ТАМ НИЧЕГО НЕТ, ПОДКЛЮЧАЕТ ПИВАС СТУДИЮ ОШИБОК НЕТ, ЗДЕСЬ МАЙКРОСОФТ ПЫТАЕТСЯ ЧТО-ТО СДЕЛАТЬ ИХ ТУТ ЖЕ УБИВАЕТ НОВЫЙ СТАНДАРТ ISOCPP! НА ODR VIOLATION ПОПАДАЮТ ВСЕ, АЛЕКСАНДРЕСКУ УХОДИТ ПРОСТО В D, ОДНОНОГИЙ СТРАУСТРУП, ОДНОНОГИЙ МЕЙЕРС, МОЖНО ЛИВАТЬ, ЭТО НЕ ЯЗЫК ПРОГРАММИРОВАНИЯ ЭТО ПРОСТО ПОШЛИ ОНИ НА


Xessao
25.07.2018
18:22:49
ВСЁ UB, ВСЁ В НОГУ, МИНУС НОГА, ЗНАКОВОЕ ЦЕЛОЧИСЛЕННОЕ ПЕРЕПОЛНЕНИЕ ПРОБИВАЕТ НОГУ, ПЕРЕГРУЖЕННЫЙ ОПЕРАТОР, НАПИСАТЬ НАДО ХОТЯ БЫ HELLO WORLD, SFINAE КОД АЙАЙАЙАЙ КАКОЙ ЖЕ TWO PHASE NAME LOOKUP У ТОЛСТОЙ СКАТИНЫ, СМОТРИТ ВАРНИНГИ КОМПИЛЯЦИИ ТАМ НИЧЕГО НЕТ, ПОДКЛЮЧАЕТ ПИВАС СТУДИЮ ОШИБОК НЕТ, ЗДЕСЬ МАЙКРОСОФТ ПЫТАЕТСЯ ЧТО-ТО СДЕЛАТЬ ИХ ТУТ ЖЕ УБИВАЕТ НОВЫЙ СТАНДАРТ ISOCPP! НА ODR VIOLATION ПОПАДАЮТ ВСЕ, АЛЕКСАНДРЕСКУ УХОДИТ ПРОСТО В D, ОДНОНОГИЙ СТРАУСТРУП, ОДНОНОГИЙ МЕЙЕРС, МОЖНО ЛИВАТЬ, ЭТО НЕ ЯЗЫК ПРОГРАММИРОВАНИЯ ЭТО ПРОСТО ПОШЛИ ОНИ НА
Не читая сохранил.

Constantine
25.07.2018
18:24:06

Xessao
25.07.2018
18:24:24
Вообще годнота.

Constantine
25.07.2018
18:24:33
я старался)

Antony
25.07.2018
18:24:44

Xessao
25.07.2018
18:25:34
@antoshkka, сколько у тебя в день уходит килограмм курева?

Constantine
25.07.2018
18:26:18
@antoshkka можно вот так, если делать статический пример
https://godbolt.org/g/j96vxS

Google

Constantine
25.07.2018
18:34:37
MSVC не может в лямбды в constexpr, хех

Stanislav
25.07.2018
18:38:59

Zodiak
25.07.2018
18:39:24
Кто практиковал шифрование файлов на AES?

Stanislav
25.07.2018
18:40:17

A.D.
25.07.2018
18:41:54

Antony
25.07.2018
18:43:26
https://godbolt.org/g/6JikjH

Stanislav
25.07.2018
18:43:34
почему автор godbolt не обновляет msvc это уже другой вопрос

Constantine
25.07.2018
18:47:52

Antony
25.07.2018
18:50:04
Завтра подумаю над вопросом
y похоже должен быть const, так как он не intervening (что бы это не значило... надо наверное уточнить у компиляторо писателей) c переменными из внешнего scope
Правильный тест кажется должен быть такой: https://godbolt.org/g/PcWDSf
с decltype знатная упячка, но кажется она вылезает из необходимости иметь одинаковые результаты для -> decltype(что-то) написанного для лямбды

Constantine
25.07.2018
18:50:57


Alexander
25.07.2018
20:13:10
https://blog.jetbrains.com/clion/2018/07/clion-2018-2-clangd-gradle-compdb-sanitizers/

Kotbegemot
25.07.2018
20:39:05

Evgeniy
25.07.2018
21:35:03
ВСЁ UB, ВСЁ В НОГУ, МИНУС НОГА, ЗНАКОВОЕ ЦЕЛОЧИСЛЕННОЕ ПЕРЕПОЛНЕНИЕ ПРОБИВАЕТ НОГУ, ПЕРЕГРУЖЕННЫЙ ОПЕРАТОР, НАПИСАТЬ НАДО ХОТЯ БЫ HELLO WORLD, SFINAE КОД АЙАЙАЙАЙ КАКОЙ ЖЕ TWO PHASE NAME LOOKUP У ТОЛСТОЙ СКАТИНЫ, СМОТРИТ ВАРНИНГИ КОМПИЛЯЦИИ ТАМ НИЧЕГО НЕТ, ПОДКЛЮЧАЕТ ПИВАС СТУДИЮ ОШИБОК НЕТ, ЗДЕСЬ МАЙКРОСОФТ ПЫТАЕТСЯ ЧТО-ТО СДЕЛАТЬ ИХ ТУТ ЖЕ УБИВАЕТ НОВЫЙ СТАНДАРТ ISOCPP! НА ODR VIOLATION ПОПАДАЮТ ВСЕ, АЛЕКСАНДРЕСКУ УХОДИТ ПРОСТО В D, ОДНОНОГИЙ СТРАУСТРУП, ОДНОНОГИЙ МЕЙЕРС, МОЖНО ЛИВАТЬ, ЭТО НЕ ЯЗЫК ПРОГРАММИРОВАНИЯ ЭТО ПРОСТО ПОШЛИ ОНИ НА
кек

Chiveson
25.07.2018
21:56:00

Alexey
25.07.2018
22:13:13
"Recompile a single file
A small but neat feature was added to speed up your development cycles in CLion when working with CMake or compilation database projects. Now you can recompile a single file without triggering the full project recompilation. This is really handy for checking local files changes:"
!
Вот это - круто

Alexander
25.07.2018
22:13:31
ну как бы джва года ждал

Alexey
25.07.2018
22:13:39
ибо для cmake это просто не сделать. даже руками в сонсоли

Google

Ignat
25.07.2018
22:55:58

Dmitry
25.07.2018
23:23:57

Constantine
26.07.2018
03:12:56

Andrey
26.07.2018
05:32:09

Constantine
26.07.2018
05:34:09

Andrey
26.07.2018
05:34:18
А что там не так?
Не так с чем? Версия MSVC на сайте старая. А взять (пусть даже купить) последнию SDK от Microsoft и дать всем желающим с ее помощью что-то компилировать не позволяет лицензия.

Constantine
26.07.2018
05:37:24
Или именно что на сайте отдельную версию не обновляют?

Andrey
26.07.2018
05:39:52
Я, конечно, ничего в этих вопросах не понимаю, но говорят, что лицензия написана так, что так скорее перечислено, что делать можно, а не написано, что делать нельзя. Так вот среди разрешенного нет пункта "можно давать всем желающим в интернете компилировать код".


Dmitry
26.07.2018
06:07:47
не понял
Складывается впечатление что речь про COW и if unique то in-place modification.

Constantine
26.07.2018
06:08:16

Dmitry
26.07.2018
06:11:52
COW строки растут из этой же идеи, да
Если поток модификации сам раздает новые версии читателям то наверное это имеет смысл. А вот если они сами копируют себе версию, значит это происходит под блокировкой и в этом случае in place модификация потребует удержания блокировки на всё время модификации.