
Sergey
25.08.2017
18:41:51
andrey2008 по-моему проел плешь со своими статьями "мы нашли сто пиццот багов в очередной опен сорс поделке"

Matwey
25.08.2017
18:42:55

Alexander
25.08.2017
18:42:55

Sergey
25.08.2017
18:43:26

Google

Eugene
25.08.2017
18:46:48

Alexander
25.08.2017
18:48:30
ну хоть маечку выиграл на их докладе

Eugene
25.08.2017
18:51:28
ну хоть маечку выиграл на их докладе
:)
Доклады может и не очень (в научной среде вообще считается моветоном выступать с одинаковым/почти одинаковым докладом на разных конференциях), но продукт хороший. Вполне себе конкурент монстрам вроде Coverity

Alexander
25.08.2017
18:52:06

Eugene
25.08.2017
18:52:52
Они почему-то резко против SaaS модели

Alexander
25.08.2017
18:54:50
а чёрт их знает
но я бы был только за

Nik
25.08.2017
19:00:03
Кто-то знает, есть чатик по mql/forex/подобному дерьму?

Alexander
25.08.2017
19:00:18
мы их банить не успеваем

Like
25.08.2017
19:00:32

Nik
25.08.2017
19:00:44
я ночью кодю, а не в чатик залипаю)

Google

Nik
25.08.2017
19:00:55
Мне по техническим вопросам, если что

Alexander
25.08.2017
19:01:05
На хабре писать надоели :(
так просто не читай, какая разница то. Пусть пишут себе, рекламятся. К тому же, так они популяризируют статический анализ, за что им спасибо

Like
25.08.2017
19:01:38
Или что у них там было..

Alexander
25.08.2017
19:02:46
UE == Unreal Engine?
ну блин, ну пусть проверяют. Делают же полезное дело - баги ищут. Репортят. Молодцы ребята

Like
25.08.2017
19:03:45
То ли UE был, то ли что то другое
Но там с геймдева

Alexander
25.08.2017
19:04:42
CryEngine
но UE там тоже было, емнип

Like
25.08.2017
19:05:02

Constantine
25.08.2017
19:06:37
Мне особенно понравилась ошибка possible array index out of bound внутри decltype выражения

Alexander
25.08.2017
19:08:27
ну блин, не суди их строго - работало по моим тестам вполне сносно. Настроил один раз в CI, ну и пусть тебе отчёты шлёт на почту каждое утро

Constantine
25.08.2017
19:09:03
да я все понимаю, но на тестах я отсмотрел примерно 100+ срабатываний и все были ложные
а, еще они не подцепили настройку UNICODE поэтому сразу выдавали ошибку на сравнения TCHAR :)

Alexander
25.08.2017
19:10:01

Constantine
25.08.2017
19:10:10

Google

Alexander
25.08.2017
19:12:28

Vladislav
25.08.2017
19:17:39

Alexander
25.08.2017
19:18:04
да я как-то привыкаю потихоньку ?

Ioann V
25.08.2017
19:42:01
Не у Костяна нормас вопросы - Костян тащит, в общемто. Мне интересно по крайней мере почитать. Треш трешем, а потехе час.

Антон
25.08.2017
19:55:50
CMAKE_EXTRA_INCLUDE_FILES
пчм не работает
а, без вас понял
а, нет

Vladislav
25.08.2017
19:58:59

Антон
25.08.2017
20:17:21
ЧТОООООО
FILE это не макрос????

Dmitry
25.08.2017
20:18:15
Это typedef
Если не ошибаюсь

Dmitry
25.08.2017
20:23:26
Не opaque structure ли?

Антон
25.08.2017
20:27:21

Eugene
25.08.2017
20:33:22
Если мне надо ограничить шаблонную функцию/класс некоторым заданным набором типов, то нормально вот так делать вообще? Пример:
static_assert(
std::is_same<TPixel, signed char>::value ||
std::is_same<TPixel, signed short>::value ||
std::is_same<TPixel, unsigned char>::value ||
std::is_same<TPixel, unsigned short>::value,
"The pixel type must be int8, uint8, int16 or uint16");
Или это как-то криво и настоящие C++ программисты делают по-другому?

Alexander
25.08.2017
20:40:58

Constantine
25.08.2017
20:59:37
хотя typelist еще в локи под C++98 был

Eugene
25.08.2017
21:03:28
а что, char нельзя? :)
В данном случае функция работает с изображениями, а тип пикселя обычно не хранится в char по крайней мере у нас.

Constantine
25.08.2017
21:03:52
а почему не устраивает произвольный integral_type

Google

Eugene
25.08.2017
21:04:06
Вообще ещё есть concept checking, предоставляемый некоторой библиотекой, но там нет нужного концепта для таких случаев.
Произвольный integer не устраивает, потому что в алгоритме создаётся lookup table примерно так:
typedef std::numeric_limits<TPixel> TLimits;
const size_t qx_range = (size_t)TLimits::max() - TLimits::min();
float range_table[qx_range + 1]
Для int32 это уже будет неподъёмно по памяти.

Constantine
25.08.2017
21:06:38
Поставьте там static_assert на ширину

Eugene
25.08.2017
21:06:56

Constantine
25.08.2017
21:07:24
Потом если надо будет воткнете enable_if с двумя разными реализациями

Eugene
25.08.2017
21:08:17
Да, пожалуй так и сделаю.

Arseny
25.08.2017
21:13:11
Как выбрать между MIT и Apache 2.0 лицензиями?

fox.cpp
25.08.2017
21:14:44
берёшь и юзаешь MIT
всё)

Admin
ERROR: S client not available

Constantine
25.08.2017
21:15:19
template <typename... Types>
struct typelist_type;
template <typename T, typename TList>
struct in_typelist : std::false_type
{
};
template <typename T, typename T2, typename... Types>
struct in_typelist<T, typelist_type<T2, Types...>>
: std::conditional_t<std::is_same<T, T2>::value, std::true_type, in_typelist<T, typelist_type<Types...>>>
{
};
странно что нет в стандарте)

Arseny
25.08.2017
21:20:43

Evgeniy
25.08.2017
21:25:45


Constantine
25.08.2017
21:39:19
версия 2 :)
namespace utils
{
namespace impl_
{
template <typename T, typename... Types>
struct typelist_has : std::false_type
{
};
template <typename T, typename T1, typename... Types>
struct typelist_has<T, T1, Types...>
: std::conditional_t<std::is_same<T, T1>::value, std::true_type, typelist_has<T, Types...>>
{
};
template <typename T, typename... Types>
struct typelist_has_duplicate : std::conditional_t<typelist_has<T, Types...>::value, std::true_type, typelist_has_duplicate<Types...>>
{
};
template <typename T>
struct typelist_has_duplicate<T> : std::false_type
{
};
template <typename... Types>
struct typelist_checked_type;
template <typename... Types>
using typelist_check_required_type = std::enable_if_t<!typelist_has_duplicate<Types...>::value, typelist_checked_type<Types...>>;
}
template <typename... Types>
using typelist_type = impl_::typelist_check_required_type<void, Types...>;
template <typename T, typename TList>
struct in_typelist;
template <typename T, typename... Types>
struct in_typelist<T, impl_::typelist_checked_type<Types...>>
: impl_::typelist_has<T, Types...>
{
};
}


Arseny
25.08.2017
21:40:52
Мне показалось, что всякие личные и научные проекты, чаще используют MIT.
А Apache используют в основном компании.
Apache по идее защищает и пользователя, и автора от проблем с патентами в будущем.
Аудиторию bsd лицензии я плохо представляю

Alexander
25.08.2017
21:43:46
я не парюсь и всё под МИТ валю

Vladislav
25.08.2017
21:44:04

Alexander
25.08.2017
21:44:15

Google

Alexander
25.08.2017
21:44:32
зачем кому-то бустовая лицензия вне буста?))
из-за лицензий этих разных проблемы возникают - приходится связываться с авторами и согласовывать вопросы перелицензирования кода. Некоторые отказываются

Vladislav
25.08.2017
21:45:23
"If you use a BSL licensed library, you'll need to write your own disclaimer stating that you aren't responsible if the software turns into a three-headed monster and does some bad stuff to your customers." лол


Eugene
25.08.2017
21:50:26
версия 2 :)
namespace utils
{
namespace impl_
{
template <typename T, typename... Types>
struct typelist_has : std::false_type
{
};
template <typename T, typename T1, typename... Types>
struct typelist_has<T, T1, Types...>
: std::conditional_t<std::is_same<T, T1>::value, std::true_type, typelist_has<T, Types...>>
{
};
template <typename T, typename... Types>
struct typelist_has_duplicate : std::conditional_t<typelist_has<T, Types...>::value, std::true_type, typelist_has_duplicate<Types...>>
{
};
template <typename T>
struct typelist_has_duplicate<T> : std::false_type
{
};
template <typename... Types>
struct typelist_checked_type;
template <typename... Types>
using typelist_check_required_type = std::enable_if_t<!typelist_has_duplicate<Types...>::value, typelist_checked_type<Types...>>;
}
template <typename... Types>
using typelist_type = impl_::typelist_check_required_type<void, Types...>;
template <typename T, typename TList>
struct in_typelist;
template <typename T, typename... Types>
struct in_typelist<T, impl_::typelist_checked_type<Types...>>
: impl_::typelist_has<T, Types...>
{
};
}
Оставлю ка я это на понедельник :)


Berkus
25.08.2017
21:53:07

Arseny
25.08.2017
22:15:36

Evgeniy
25.08.2017
22:28:29

Constantine
25.08.2017
22:44:35
Хм... а ведь наверняка есть утилита, которая делает частичный макро препроцессинг бустовых библиотек под конкретные настройки

Alexander
25.08.2017
22:45:04
Boost.Config?

Constantine
25.08.2017
22:46:30
Я имею в виду: аутпут утилиты модифицированные исходники с жестко подставленными определенными макросами

Alexander
25.08.2017
22:50:11
а просто запустить препроцессор?

Constantine
25.08.2017
22:53:10
Хех, XY. Я хочу чтобы в винде под 14 вижаком у меня в гите лежал набор исходников, который чихал на существование линуксов и компиляторов, поддерживающих стандарт C++17
Это упростит понимание того, что и как реализовано в исходниках, что поменялось в последнем обновлении и что поменяется при переходе на новый вижак

Vladislav
25.08.2017
23:03:44
проблема в том что препроцессор - path-dependent, поэтому в общем случае так сделать нельзя

Constantine
25.08.2017
23:04:25

Alexander
25.08.2017
23:05:35
а откуда там препроцессор будет тянуть всякую дичь и откуда подставлять будет - не велика проблема

Vladislav
25.08.2017
23:06:48
о каких путях речь?
в зависимости от того, кто и в каком порядке подключил данный конкретный .h файл, в нем может случиться всякое
и зная буст, это довольно часто происходит на практике

Constantine
25.08.2017
23:07:26
ну то что там сверху надо навешать pragma error на попытку изменить конфигурацию факт.