Pull to refresh
23.2
Karma
0
Rating
  • Followers 5
  • Following 2

Глава Xsolla объяснил, как выбрали 147 неактивных сотрудников

Я прошу прощения, но человек писал про те компании где "топы" не решаются на такие действия и объяснял почему. Его комментарий по сути не затрагивает материал статьи, а лишь является пояснением к комментарию wolfer. Поэтому ваш посыл про "а вы не думали" как минимум несправедлив.

Современный C++ != (Самый)Новый Стандарт

Это эволюционная особенность нашего мозга. Если что-то делалось до этого и получалось, то появление новшеств не принимается, т.к. несет опасность устоявшемуся порядку. Человек может сделать усилие и преодолеть этот природный триггер. Но чем старше человек, тем труднее ему это дается. Поэтому эти люди скорее не игнорируют, а стараются оставаться в "зоне комфорта".

Глубина кроличьей норы или собеседование по C++ в компании PVS-Studio

Вы так говорите, как будто все эти вещи только в С++20 появились :) Они в языке были почти с самого начала.

Книга «C++. Практика многопоточного программирования»

Написал я вам по поводу этого (через форму обратной связи на сайте), а ответа нет уже месяц.

Инициализация в современном C++

Там еще и откровенно не являющийся инициализацией пример дан.
int i13();              //declares a function


Почему я больше не использую современный C++

Не очень понятно почему shared_ptr — современный, он в boost c 1999 года присутствует.

Учёные: на Марсе не хватит CO₂ для разогрева атмосферы. Взрыв полюсов не поможет

И все-таки, я убежден, что можно достигать этих целей без высказывания оценочных суждений о собеседнике. Ибо, как вы правильно сказали, неадекватов в сети очень много, и они точно так же пользуются этими приемами. И отличить одних от других порой невозможно. Поэтому можно не удивляться ситуации, когда один адекватный человек спровоцировав другого адекватного человека, наученного троллями в интернете, получил в итоге неадекватный ответ.
Множество бед в мире от банального недопонимания.

Учёные: на Марсе не хватит CO₂ для разогрева атмосферы. Взрыв полюсов не поможет

У меня нет вопросов к содержанию ваших замечаний, а лишь только к форме.
Мой вопрос касался буквально следующего: вряд ли ваше замечание о глубине фантазии собеседника наставит его на путь истинный, а лишь создаст конфликтную ситуацию на ровном месте. Что в общем-то подтверждается дискуссией далее. И вам таки пришлось развернуть свою мысль, так почему бы не сделать это сразу, минуя все эти спорные фразы?
Меня очень печалит тот факт, что люди упускают такие простые вещи из виду.

Учёные: на Марсе не хватит CO₂ для разогрева атмосферы. Взрыв полюсов не поможет

Всегда удивляло такое отношение к собеседнику.
Если вы знаете больше, напишите что именно неправильно. Зачем начинать обсуждать качества личности человека, делать какие-то вывод на его счет?

Как я стандартную библиотеку C++11 писал или почему boost такой страшный. Глава 4.3

Кстати, очень интересно было бы посмотреть на вашу реализацию common_type.

Могу сказать, что в моем случае — это как раз один из тех примеров, когда пришлось делать условную компиляцию. Для GCC 2.х реализация оказалась настолько нетривиальна, что брать ее как основную мне не позволила совесть.

Как я стандартную библиотеку C++11 писал или почему boost такой страшный. Глава 4.3

Сама статья про другое, но написана она была по мотивам создания практически такого же набора инструментов, как у вас. Платформа только различается и целевые компиляторы.
Вы не подумайте, мне очень близка ваша идея строгого соответствия «букве» закона. Но я, как практик, при столкновении с подобными трудностями в своей реализации, делая выбор между «поддерживать фичу с оговорками» или «не поддерживать вовсе» выбираю первое :)

Взять, например, задачу определения наличия функции-члена класса с заданной сигнатурой, которая нерешаема в рамках стандартного С++98. Однако, эта возможность была необходима в инструментарии, который я создавал. Без нее было бы слишком неудобно им пользоваться. Поэтому я пошел на этот компромисс.

Также приходилось сталкиваться в ситуацией, когда невозможно написать общий код для всей линейки нужных компиляторов, и таки приходилось делать условную компиляцию. Т.к. баги-фичи одних компиляторов были взаимоисключающими относительно других. Общий знаменатель был невозможен.

Как я стандартную библиотеку C++11 писал или почему boost такой страшный. Глава 4.3

Таки шашечки или ехать? :)
В бусте тоже встречаются workaround`ы с нестандартными особенностями, обложенные проверками под конкретные компиляторы.
Ведь если мы работаем в условиях такой плохой поддержки стандарта, то сетовать на несоответствие стандарту некоторым образом лукавство, особенно, если код обеспечивает требуемое поведение.
Поэтому тут надо выбирать что важнее.

PS. Да, и я в курсе этих особенностей, т.к. сам некоторым образом решал подобную вашей задачу (пример: habr.com/post/277727), но для линейки старых GCC и Intel под Linux и BSD. Попробуйте вашу реализацию на GCC 2.x, возможно найдется множество интересных локальных задачек по нахождению обходных путей.

Как я стандартную библиотеку C++11 писал или почему boost такой страшный. Глава 4.3

Борландовские версии к сожалению не работают, сегодня проверил :) Я долго пытался состряпать workaround, но похоже пациент совсем плохо умеет SFINAE — ничего не вышло.
Если автору важно поддерживать Borland C++, то вполне понятно почему он не применил это решение.

Как я стандартную библиотеку C++11 писал или почему boost такой страшный. Глава 4.3

… проблема возникает с неполным типом T[] (массив без указания длины). Дело в том что данный тип не определяется некоторыми компиляторами (C++ Builder) при специализации шаблона, и универсальное решение здесь я пока что не нашел.

Проверил код ниже на C++ Builder 6 — работает.

namespace detail {

    template <typename T>
    static yes_type foo(T (*)[]);
    static no_type  foo(...);
    
    template <typename T>
    static T * declptr();
}

// is_array
template <class Tp>
struct is_array
{ 
    enum 
    { 
        value = sizeof(detail::foo(detail::declptr<Tp>())) == sizeof(yes_type) 
    }; 
};

template <class Tp, std::size_t Size>
struct is_array<Tp[Size]> 
    : true_type 
{ };

Адский проект

Мы использовали ICE.
zeroc.com/products/ice

Флаги в аргументах функций

Нет, тут дело не в этом.
Проблема производительности в том, что если у нас есть переменная val целого типа, то компилятор в выражении
bool f = val;

может сгенерировать (внимание, ниже псевдокод для демонстрации поведения) нечто вроде такого:
bool f = val == 0 ? false : true;

Это предупреждение было призвано обозначить возможность потенциальной генерации такого кода в этом месте, на случай, если программист об этом не подумал.
Чтобы не быть голословным, приведу практический пример с дизассемблером:
godbolt.org/g/FQG8Jk
Как видим, в безобидном присваивании появилось условие. Данный warning об этом.

При этом, если посмотреть выданную выше ссылку, то можно увидеть в ответе на report такие слова
My understanding of the history of C4800 was that it was introduced a very long time ago (~1990?) to address concerns for developers migrating from C.
Это коссвенно указывает на тоже самое, о чем я говорил выше. Т.к. в С не было типа bool, то программисты на нем, при переходе на С++ могли быть неприятно удивлены, что одинаковый внешне код в С++ приводит к генерации «лишних» инструкций, чего в С не наблюдалось. Поэтому на каких-то этапах это предупреждение действительно было полезно.

Книга «Linux API. Исчерпывающее руководство»

А вот у меня вопрос.
А почему из перевода книги убрали 4 главы про System V?

Бестиарий С++. Справочник по загадочным персонажам

Функции с cv-seq (мерзкие типы) — это больная тема. Несколько лет назад в своей статье как раз затрагивал проблемы, связанные с интерпретацией таких типов компиляторами. :)
Ссылка к слову пришлась


В C++17 до сих пор нет нормальных многомерных массивов, которые были в Fortran начиная с Fortran 90

В книге «Шаблоны С++. Справочник разработчика», есть целый раздел, посвященный оптимизации таких выражений, для исключения создания «лишних» временных объектов. Описанный подход немного потерял актуальность с выходом новых стандартов, но для понимания сути очень полезно почитать, я думаю. Чтобы не слепо верить и не никогда использовать, а разобраться и делать осознанный выбор.

Information

Rating
Does not participate
Location
Россия
Registered
Activity