Vsevolod
угу
Stanislav
интересно просто, по сравнению по ценам pvs vs coverity :)
Stanislav
ни у кого цен нету лол
Alexander "SonnySlave"
Они себя позиционируют как тулза между cppcheck и коверити по цене
Alexander "SonnySlave"
Ну это с их слов
Konstantin
У них есть ещё чето типа pvs lite , забыл как называется
Stanislav
У них есть ещё чето типа pvs lite , забыл как называется
был там cpp что то там, но закрыли же его
Stanislav
но пивас щас вполне можно для опенсурса юзать
Konstantin
Pvs cat чтоли
Igor
умерло полгода чтоли спустя после релиза
rus
Я извиняюсь, если пропустил. А почему SonarQube не заюзать? https://www.sonarqube.org/
Vitaliy
Товарищи, кто-нибудь знает как в CLion собирать проект в окружении песочницы линуксовой ?
Иван
Не знаете, был ли proposal или обсуждение про if constexpr вокруг объявлений методов класса? Что-то вроде такого: template<typename T> class C { public: if constexpr (std::is_integral_v<T>) { void foo() {} } else { void bar() {} } };
Иван
Сейчас для этого приходится использовать sfinae, да и то иногда возникают проблемы, когда пытаюсь сделать explicit instantiation.
Anonymous
Но подозреваю, что это сложно реализовать.
Anonymous
Хотя хз, давайте подумаем.
vladislav
Вырвиглазие какое-то
Fᴏʀᴅᴇɴ
Вырвиглазие какое-то
Мхех, ты на плюсах пишешь Ты не привык?
Anonymous
Вырвиглазие какое-то
ИМХО читабельнее, чем std::enable_if_t<std::is_integral_v<T>> foo(); std::enable_if_t<!std::is_integral_v<T>> bar();
Иван
Я не настоящий сварщик, но на первый взгляд не очень сложно должно быть. Фактически, это получается несколько разных специализаций для разных типов.
Anonymous
Возвращаемый тип должен быть возвращающим типом, а не условием доступности перегрузки.
Иван
ИМХО читабельнее, чем std::enable_if_t<std::is_integral_v<T>> foo(); std::enable_if_t<!std::is_integral_v<T>> bar();
Плюсую, а ещё в таком случае нельзя сделать разный тип у foo в зависимости от T, потому что overloads cannot differ only in return type.
Иван
а чем sfinae-то не устраивает?
Устраивает, но обычный if constexpr-то сделали зачем-то.
Иван
предположим есть такое, как это использовать?
У меня два кейса было за последнее время: PointXY, у которого хочу normalize(), если тип координат вещественный, и Sequence<T>, которой хочу каст к строке, если T == char.
Иван
Всё делается через sfinae, конечно. Вопрос в том, что раз обычный if constexpr сделали ради упрощения такого кода, то и такое могли рассматривать.
Иван
А если есть пропозал, то там наверняка и проблемы обсуждались, которые мне сейчас не очевидны.
Oleg
Я знаю, Ваня, ты хочешь концепты.
Vitaliy
Хочется делать билд по нажатию одной кнопки
Vitaliy
А что значит в mock ?
Vitaliy
Спасибо за ссылку, я завтра почитаю
Anatoly
Всё делается через sfinae, конечно. Вопрос в том, что раз обычный if constexpr сделали ради упрощения такого кода, то и такое могли рассматривать.
можно еще диспетчеризацию применить: template<typename T> class point { public: void normalize() {normalize_(typename std::is_floating_point<T>::type());} private: void normalize_(std::true_type) {//normalization} };
Иван
можно еще диспетчеризацию применить: template<typename T> class point { public: void normalize() {normalize_(typename std::is_floating_point<T>::type());} private: void normalize_(std::true_type) {//normalization} };
Это немного не о том. Функция всё равно будет доступна, а я хочу, чтобы её просто не было (= среда не подсказывала).
Иван
кстати, а почему бы это не решать через базовый класс?
Это ещё больше boilerplate, и не всегда понятно, как вынести общую логику, которая должна быть везде.
Aidar
Это +1 способ сделать это, причем не лучшего качества
Aidar
Да давайте писать ещё и логику при объявлении членов
Aidar
А можно было просто заюзать тег диспатч какойнить или статикассерты
Иван
Александреску читали?
Не могу похвастаться про от корки до корки, так, избранное.
Aidar
Я про то что спроецируйте полиси на свой случай
Иван
Ну так-то я свою проблему решил. Речь не о том, что иначе нельзя, просто было интересно именно про такой способ, который кажется логичным продолжением if constexpr.
Иван
Нет так нет :)
Tiger20111
Добрый вечер. Можно мини пояснение. в программе : int expected = 0; if (flag.compare_exchange_strong(expected, 1) { // The lock succeeded } мы сравниваем flag с exprected и если совпало записываем flag = 0 иначе flag = 1? втупляю
Иван
https://pastebin.com/awiFQGDp
Да, так можно, действительно. Небольшой минус - подсказки YouCompleteMe мусорятся названием базового класса.
Danil
и это останется читаемым
Danil
а YCM выброси, гадость же)
Иван
А есть аналоги?
Danil
А есть аналоги?
https://github.com/Andersbakken/rtags
Anonymous
а YCM выброси, гадость же)
clangd/cquery + Language Client.
Иван
Интересно. Года три назад все в один голос ycm рекомендовали.
Tiger20111
Если совпало меняем на 1 иначе нет
нет - ничего не делаем и возвращаем значение функции как false?
Aidar
Да
Aidar
Это атомарная операция
Tiger20111
спасибо!)
Danil
Интересно. Года три назад все в один голос ycm рекомендовали.
Ключ во фразе года три назад. Раньше этого не было
Danil
и ycm как гавно работал, но лучше не было)
Danil
хотя он и сейчас ужасно работает
Иван
Ну, сейчас он меня вполне устраивает.
Иван
Но на эти штуки посмотрю.
Danil
за clangd будущее по идее
Danil
я просто привык к rtags
Anonymous
clangd довольно сырой, есть другая реализация LSP — cquery, она получше пока будет.
Иван
Да, интересно, спасибо.
FailsBot
Vsevolod остановился на coverity
Anonymous
cebka, elaborate.
Vsevolod
Космонавтом!