Pull to refresh
-2
Send message
Delphi, даже в свои лучшие времена, так и не стала industry standard; даже в 97-98 в Штатах практически никто (по масштабам индустрии) Delphi не использовал
Ну, как раз Microsoft делала всё, чтобы защитить штатовский рынок. А вот в Японии, Бразилии, СССР Delphi был очень популярен.
Если их использовать для кодогенерации (основной кейс, как мне кажется), то, например, программа может просто не компилироваться без них (ибо нет того, что они нагенерировали).
Нет, не может. В стандарте есть специальный пункт, что программа должна корректно компилироваться, встречая неизвестные компилятору атрибуты.
А они очень слабые. Не разрешены пользовательские атрибуты, потому что нет рефлексии, плюс сейчас требуется, чтобы правильная программа с атрибутами обладала той же семантикой, что и без них. То есть область применения атрибутов очень узка по сравнению, скажем, с C#: оптимизации, предупреждения. Вот сейчас добавились контракты.
Вы как-то сосредоточились на поиске ошибок в коде в стиле C с классами. Попробуйте проверить что-нибудь с бустовскими библиотеками, где делается свой EDSL типа Proto, Spirit, uBLAS. Ну или хотя бы в своих правилах проверяйте операторы на перегруженность и не давайте предупреждений на них, если не можете их правильно обрабатывать. А то отчёт полон предупреждений не просто ложных, а не имеющих отношения к коду вообще.
Не совсем по теме вопрос. Диагностика V813 не учитывает copy elision, кажется. В C++ 17 добавлен гарантированный copy elision и VC++ его поддерживает en.cppreference.com/w/cpp/compiler_support.
Здесь можно посмотреть короткое обсуждение передачи параметров по значению stackoverflow.com/questions/33872026/copy-elision-for-pass-by-value-arguments.
Ну Гради Буч вообще подошёл к делу с размахом. Во перывых он собрал всех чуваков, которые делали хоть мало мальски вменяемые тулзы для построения визуализованных спецификаций и таким образом пропылесосил рынок. Потом они вместе написали UML, RUP, сделали Rational Rose и всю линейку для командной разработки. А потом пробили правило, что тот, кто пользуется продуктами Rational Software автоматически сертифицируется на CMM 5. А требование сертификата CMM довольно часто указывается при размещении заказов на разработку, особенно госзаказов.
Так что хоть какая-то польза от Rational Rose есть.
Можно заинжектиться в другой процесс и хипволкать в своё удовольствие.
Так и развернётся. Ложная ветка не будет компилироваться, примерно как #ifdef… #else… #endif.
При всём уважении к Крису он был больше популяризатором, чем кул хацкером.
Разумнее перейти на alignas() из C++11, если, конечно, есть возможность.
Бьёрн говорил, что пока отказались из-за проблем с совместимостью.
Для возвращаемого значения copy elision делается для RVO
auto foo() -> T { return T{}; }


и для NRVO
auto foo() -> T { T t; return t; }


В вашем случае copy elision скорее всего сделан не будет.
12 ...
7

Information

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