Egor
выделяю память под функцию
Berkus
sizeof(void) распечатай в консоли
Egor
лол)
Egor
профиксил, но все-равно указатели одинаковые получаются
Egor
есть
Egor
https://blog.noctua-software.com/c-lambda.html
Egor
тело
Egor
Да
Egor
Egor
а что это тогда, если не си?
Nikita
Berkus
ba-dum-tss
Matwey
Александр
constexpr function arguments, дискасс
https://godbolt.org/g/KFkyCR
Александр
По-моему, это просто гениально
Matwey
Братья, я как-то неправильно использую boost.karma?
Matwey
In file included from /usr/include/boost/iostreams/detail/is_dereferenceable.hpp:13:0,
from /usr/include/boost/iostreams/detail/resolve.hpp:26,
from /usr/include/boost/iostreams/detail/push.hpp:24,
from /usr/include/boost/iostreams/detail/streambuf/indirect_streambuf.hpp:31,
from /usr/include/boost/iostreams/stream_buffer.hpp:22,
from /usr/include/boost/iostreams/stream.hpp:21,
from /usr/include/boost/spirit/home/karma/stream/detail/iterator_sink.hpp:13,
from /usr/include/boost/spirit/home/karma/stream/stream.hpp:24,
from /usr/include/boost/spirit/home/karma/stream.hpp:14,
from /usr/include/boost/spirit/home/karma.hpp:27,
from /usr/include/boost/spirit/include/karma.hpp:16,
from /home/matwey/lab/libfailure/include/net/proto/legacy/line.h:6,
from /home/matwey/lab/libfailure/test/bench/net/proto/legacy/line.cpp:1:
/usr/include/boost/type_traits/detail/template_arity_spec.hpp:13:84: note: #pragma message: NOTE: Use of this header (template_arity_spec.hpp) is deprecated
# pragma message("NOTE: Use of this header (template_arity_spec.hpp) is deprecated")
Я не против того, что deprecated, я даже можно сказать за. Но как мне этот ворнинг убрать теперь?
Evgenii
In file included from /usr/include/boost/iostreams/detail/is_dereferenceable.hpp:13:0,
from /usr/include/boost/iostreams/detail/resolve.hpp:26,
from /usr/include/boost/iostreams/detail/push.hpp:24,
from /usr/include/boost/iostreams/detail/streambuf/indirect_streambuf.hpp:31,
from /usr/include/boost/iostreams/stream_buffer.hpp:22,
from /usr/include/boost/iostreams/stream.hpp:21,
from /usr/include/boost/spirit/home/karma/stream/detail/iterator_sink.hpp:13,
from /usr/include/boost/spirit/home/karma/stream/stream.hpp:24,
from /usr/include/boost/spirit/home/karma/stream.hpp:14,
from /usr/include/boost/spirit/home/karma.hpp:27,
from /usr/include/boost/spirit/include/karma.hpp:16,
from /home/matwey/lab/libfailure/include/net/proto/legacy/line.h:6,
from /home/matwey/lab/libfailure/test/bench/net/proto/legacy/line.cpp:1:
/usr/include/boost/type_traits/detail/template_arity_spec.hpp:13:84: note: #pragma message: NOTE: Use of this header (template_arity_spec.hpp) is deprecated
# pragma message("NOTE: Use of this header (template_arity_spec.hpp) is deprecated")
Я не против того, что deprecated, я даже можно сказать за. Но как мне этот ворнинг убрать теперь?
не используй хедер?
Matwey
какой? karma.hpp?
Matwey
А какой вместо него?
Evgenii
хм ну тогда наверное буст патчить)
Matwey
Ну тут же целый чат экспертов
Matwey
Буду использовать более старый boost
Matwey
На зло чатику
Matwey
=D
Berkus
Maksim
Dr. Friedrich
Ты бы как-то поменьше пример сделал, а то кода очень уж дохрена. Кто его разберёт, в каком месте именно начинается расхождение.
Berkus
да там вроде минимальный пример )
Maksim
Я ещё раз проверил. Можно написать меньше по объёму, но непонятнее. Лучше от этого, как мне кажется, не станет.
Tom
По-моему, это просто гениально
Это классика. Непрактично уж очень: представь, сколько overloads надо написать, чтоб для каждого аргумента такое предусмотреть.
Constantine
Вполне возможно, что какой-то трейт ломается
Maksim
Спасибо, попробую.
Maksim
2017
Maksim
(15.3.4)
Constantine
static_assert(std::is_same<has_ab_member_variables<Test>, void>::value, "AB failed"); //здесь еще ОК
Constantine
проблема при матче трейта ab_member_variables_has_the_same_type_policy
Constantine
при этом сам трейт вроде работает
Maksim
Как вы это выяснили?
Constantine
если его заменить на void, выводит yes
Constantine
при этом если написать ему значение int, переменная этого типа объявляется
Maksim
Бред какой-то.
Constantine
https://pastebin.com/pNm49REy
Constantine
чуть более короткий пример
Constantine
Constantine
Еще чуть более сокращенная версия
Constantine
https://pastebin.com/fKUGA7Sx
Tom
https://godbolt.org/g/hVn8Pr что тут не так?
Maksim
https://pastebin.com/nWNwbK1e
Maksim
Так тоже не работает.
Maksim
Хотя разницы особой нет.
Constantine
вообще есть какие-то фокусы с неиспользуемыми шаблонными параметрами, и я их не помню
Constantine
забавно, что вот так работает
https://pastebin.com/PEXd8r8Y
Constantine
Constantine
только 10 тестов на каждый трейт не забывайте
Constantine
Tom
Почему?
std::enable_if_t<false> есть ill-formed. Поэтому-то мы и используем его для matching. Но если вставить его в using, то получается мы пытаемся создать неверный typedef. Но можно например использовать std::enable_if, а type в самом конце ставить. Понятна идея?
Evgenii
Tom
Вот пример коротенький https://godbolt.org/g/1ADujW
Constantine
Tom
Constantine
Tom
Constantine
Constantine
Собственно пример использует is_detected на выражение ab_member_variables_has_the_same_type_policy
Maksim
Кстати. Посоветуйте, пожалуйста, _современного_ чтива по всей этой шаблонной магии. Книги, блоги, что угодно.
Constantine
Tom
Tom