Size: a a a

2020 September 15

NP

Nikita Petrenko in pro.cxx
Vladimir Kostylev
placement new же, нет? буфер культурно удалить, объект висеть останется;
Нет, санитайзер будет ругаться, если в деструкторе освобождается память (а он, соответственно, не вызывается)
источник

LY

Leonid Yuriev in pro.cxx
Dmitriy
У другого человека баг воспроизвелся.
Неужели просто все вырезается при оптимизации?
источник

LY

Leonid Yuriev in pro.cxx
Камрады, покидайте в меня помидорами (request for code review).
https://github.com/erthink/libmdbx/blob/c%2B%2B/mdbx.h%2B%2B
источник

NP

Nikita Petrenko in pro.cxx
не похоже, что это ответ. В дизасме зовётся operator new
источник

OZ

Olzhas Zhumabek in pro.cxx
Leonid Yuriev
Камрады, покидайте в меня помидорами (request for code review).
https://github.com/erthink/libmdbx/blob/c%2B%2B/mdbx.h%2B%2B
источник

NP

Nikita Petrenko in pro.cxx
Nikita Petrenko
не похоже, что это ответ. В дизасме зовётся operator new
источник

NP

Nikita Petrenko in pro.cxx
собирал вот так:
clang++ -fsanitize=address -O0 -g ./main.cpp
источник

OZ

Olzhas Zhumabek in pro.cxx
есть кто разбирается в резюме? можете мое почитать и дать отзывы? Ищу именно С++ работу
источник

OZ

Olzhas Zhumabek in pro.cxx
если что можно на godbolt.org запостить, но у меня почему то днс от провайдера не резолвил сайт
источник

NP

Nikita Petrenko in pro.cxx
Olzhas Zhumabek
если что можно на godbolt.org запостить, но у меня почему то днс от провайдера не резолвил сайт
ну мы вроде выяснили, что оно платформозависимое. Чтобы наверняка, лучше так
источник

LY

Leonid Yuriev in pro.cxx
Потому-что в прикладухе мне нужен strict no-aliasing от char8_t из C++20 и там еще что-то отваливалось (не фатально, но неудобно).
Но в целом, наверное, мне стоит подумать о enum class byte : char8_t {}  для C++20.
Ща поковыряюсь...
источник

LY

Leonid Yuriev in pro.cxx
Глянул у себя (Fedora32).
При включении оптимизации всё выбрасывается и остается только xor %eax, %eax; retq
источник

NP

Nikita Petrenko in pro.cxx
Ну так санитайзеры с оптимизацией и не умеют работать, их разрабы так и пишут
источник

NP

Nikita Petrenko in pro.cxx
Nikita Petrenko
собирал вот так:
clang++ -fsanitize=address -O0 -g ./main.cpp
У меня leak sanitizer не может задектить даже при -О0
источник

NP

Nikita Petrenko in pro.cxx
я не вчитывался, что происходит в ассемблере, но всякая ветка кода проходит через operator new (символ _Znwm)
источник

LY

Leonid Yuriev in pro.cxx
Nikita Petrenko
Ну так санитайзеры с оптимизацией и не умеют работать, их разрабы так и пишут
Они работают не с оптимизацией, а с итоговым кодом (условно говоря на уровне C).
источник

VF

Vladislav Filimonov in pro.cxx
В c++14 появились некоторые  alias templates (std::enable_if_t, std::conditional_t и др.)
При написании своего type_trait и алиаса для него:

template <typename T, typename = void>
struct is_iterable : std::false_type {};

template <typename T>
struct is_iterable<T, std::void_t<decltype(std::declval<T>().begin()),
                                 decltype(std::declval<T>().end())>>
   : std::true_type {};

template<typename T>
using is_iterable_v = typename is_iterable<T>::value;

Почему для него алиас выдаёт ошибку в enable_if?

error: type/value mismatch at argument 1 in template parameter list for ‘template<bool _Cond, class _Tp> using enable_if_t = typename std::enable_if::type’
 template<typename T, std::enable_if_t<is_iterable_v<T>, nullptr_t> * = nullptr>
источник

АК

Александр Караев... in pro.cxx
Vladislav Filimonov
В c++14 появились некоторые  alias templates (std::enable_if_t, std::conditional_t и др.)
При написании своего type_trait и алиаса для него:

template <typename T, typename = void>
struct is_iterable : std::false_type {};

template <typename T>
struct is_iterable<T, std::void_t<decltype(std::declval<T>().begin()),
                                 decltype(std::declval<T>().end())>>
   : std::true_type {};

template<typename T>
using is_iterable_v = typename is_iterable<T>::value;

Почему для него алиас выдаёт ошибку в enable_if?

error: type/value mismatch at argument 1 in template parameter list for ‘template<bool _Cond, class _Tp> using enable_if_t = typename std::enable_if::type’
 template<typename T, std::enable_if_t<is_iterable_v<T>, nullptr_t> * = nullptr>
template<typename T>
constexpr bool is_iterable_v = is_iterable<T>::value;
источник

АК

Александр Караев... in pro.cxx
::value - это bool
::type - это тип
источник

OZ

Olzhas Zhumabek in pro.cxx
возможно стоит добавить inline если в хедере и есть 17
источник