Constantine
2. Разрешить forward declaration для классов с указанием наследования. При этом если указано более одного класса-предка, в списке предков не может быть incomplete type. class Base; class Derived: public Base;
Собственно, вот это намного менее очевидно, и я хотел бы сразу иметь возможность подумать, как пофиксить подводные камни
Constantine
2. Разрешить forward declaration для классов с указанием наследования. При этом если указано более одного класса-предка, в списке предков не может быть incomplete type. class Base; class Derived: public Base;
Это нужно для того, чтобы компилятор мог синтезировать приведение типа вида Derived* к Base* без необходимости полностью определять класс Derived
Александр
Вот интересно, почему унарный плюс noexcept(S == signedness::Unsigned)
Александр
это ж плюс, а не минус
Constantine
2. Разрешить forward declaration для классов с указанием наследования. При этом если указано более одного класса-предка, в списке предков не может быть incomplete type. class Base; class Derived: public Base;
Кроме того, если деструктор класса Base помечен как виртуальный и еще при дополнительных условиях, компилятор может не включать определение класса Derived при вызове деструктора класса Derived
Dmitry
по sfinae вообще ничего нет
Александр
Потому что int x = -1; x >>= 1; это UB?
а причем тут унарный плюс?
Александр
как выражение int x = ???; int y = +x; может стать UB, если унарный плюс ничего не делает с числом? ничего от слова совсем
Constantine
а, лол, УНАРНЫЙ плюс
Constantine
боже
Constantine
что вообще такое унарный плюс? :)
Constantine
хорошо, что его в JSON тупо забанили :)
Constantine
+1 не число в JSON.
Александр
вот унарный минус там еще может дать UB
Constantine
https://msdn.microsoft.com/en-us/library/ewkkxkwb.aspx The result of the unary plus operator (+) is the value of its operand. The operand to the unary plus operator must be of an arithmetic type. Integral promotion is performed on integral operands. The resultant type is the type to which the operand is promoted. Thus, the expression +ch, where ch is of type char, results in type int; the value is unmodified. See Integral Promotions for more information about how the promotion is done.
Александр
но в пропозале возвращается тот же тип, никуда не идёт каст
Constantine
проверьте
Constantine
char x = 'a'; static_assert(std::is_same<decltype(+x), int>::value, "really???");
Максим
Я тебе что, по английски буду читать
Constantine
но в пропозале возвращается тот же тип, никуда не идёт каст
а преобразование int -> char не является UB?
Александр
Александр
так это char -> int
Constantine
да
Constantine
а что вернет предикат?
Александр
char x = 'a'; +x; // int is_same... == true;
Александр
хотя фиг его знает
Constantine
там вопрос, какой тип собирается вернуть std::unary_plus вообще
Constantine
если я правильно понимаю, о чем речь
Ulyana
Ребята, привет! (сразу прошу прощения за оффтоп) Есть информация (надеюсь, любопытная) для минских поклонников С++ Проводим мероприятие из серии Яндекс.Изнутри во вторник 20 июня. Теперь про Карты. По ссылке – программа и форма регистрации для тех, кто захочет прийти: https://events.yandex.ru/events/meetings/20-june-2017/ Предвосхищая вопросы – запись будет, трансляции – не будет.
Ulyana
Пока таких планов не было :) Но мы учтем, что есть интерес))
🐙 Antony
Вот интересно, почему унарный плюс noexcept(S == signedness::Unsigned)
Сделал себе пометочку, поправим позже
Александр
Evgenii
-INT_MIN - UB
а ну да
Evgenii
туплю че-то
Constantine
> void *$() { [&](...) {$:[]() {({ $:; _:[]() {},""[+-(&&$ < &&_)]; }); }(); }([=]() {}); } ошибка компиляции после этого: void *$() { [&](...) {$:[]() {( не понимает выражение в {}
Constantine
вижак уверен, что $ допустимое имя переменной
Constantine
что вообще должно было значить выражение в фигурных скобках
Constantine
тут
у меня не компилит
Stanislav
у меня не компилит
ну по ссылке написано какая версия гцц и флаги
Berkus
обсуждение выше прочитай там gcc extensions заюзаны
Berkus
msvc и не скомпилит
Bohdan
vs?
Matway
Уже год как отказался от 2015.
Matway
Ну, 2017. Сначала кандидат, а теперь и релиз.
Matway
Да, прод.
Constantine
Nikolai
В итоге к моему вопросу об открытие - фар не смог, не хватило памяти тупо мне; Вышел из этого проще - консольный сплит и grep спасли)
Matway
Были, особенно в дорелизных версиях.
Matway
Конкретику вспоминать надо. На данный момент всё хорошо.
Nikolai
Есть Фар x64. Помогает. Хотя с плагинами беда.
ну у меня тут ситуация такая, что диск забит, а опертивно не получается освободить и тупо виртуалной памяти не хватает.
Constantine
вот такая версия под вижак: void *$(){[&](...){$:[](){{$:;_:[]() {},""[+-('\"')];}}();}([=](){});}
Nikolai
ого
Nikolai
я бы посмотрел видосик да на работе, трафик тут не жирный
Nikolai
спасибо, вещь нужная))
Matway
Ломалась подсветка (до сих пор глючит, жалуется один из моих разработчиков), были баги с C++11/14, странно линковался рантайм, неожиданно забиваются мусором obj файлы (неудобно, когда проект с двухчасовым билдом вдруг сам решает пересобраться), окошки интерфейсные гуляли туда-сюда. Интеллисенс зависает (до сих пор, и это бесит). Есть мнение, что линковка стала медленнее, чем на vs2015-шном линкере. Ну и падала и висла 2017 довольно часто.
Matway
Ну, сам тулчейн тьфу-тьфу. За последние полгода clang гораздо чаще глючил в наших проектах, чам msvc.
Stanislav
Stanislav
пичаль(
Stanislav
тоже будет хорошо)
🐙 Antony
Написать библиотеку - это 10% работы. Остальные 90% - это документация, тесты, тестирование, поддержка.
Berkus
это уже не первый раз да?
Berkus
я вижу как винни в слаке дрожит перед ревью биста и переписывает всякие красоты покрасивше
Berkus
возможно чтоит расссчитывать в дальнейшем что мини-ревью будет не очень мини
Berkus
ну так я и говорю
Berkus
что надо готовить их к ревью и отправлять, а не рассчитывать не мейнтейнеров которые эээм... эксцентричны