Size: a a a

2020 March 23

PK

Pavel Kazakov in pro.cxx
это только говорит об известности проекта) он у всех на устах))
источник

FF

Flex Ferrum in pro.cxx
Pavel Kazakov
это только говорит об известности проекта) он у всех на устах))
Эм... Ну хорошо хоть не на языке...
источник

AD

Andrey Davydov in pro.cxx
Vlad Ertel
Привет. Есть тут исповедующие макросы?

Есть такой код:

#define MACRO(__x__)
static_assert(SOME_MACRO##__x__ == __x__)

#define SOME_MACRO SOME_VALUE

MACRO(lalala)

При вызове MACRO(lalala) не подставляется SOME_MACRO. Что можно с этим поделать?
(комменты что макросы - зло, в чатик для холиваров)
источник

АК

Александр Караев in pro.cxx
Vlad Ertel
Привет. Есть тут исповедующие макросы?

Есть такой код:

#define MACRO(__x__)
static_assert(SOME_MACRO##__x__ == __x__)

#define SOME_MACRO SOME_VALUE

MACRO(lalala)

При вызове MACRO(lalala) не подставляется SOME_MACRO. Что можно с этим поделать?
(комменты что макросы - зло, в чатик для холиваров)
https://godbolt.org/z/fk0eWJ
впрочем, предыдущий вариант намного лучше
источник

VE

Vlad Ertel in pro.cxx
источник

A

Alex in pro.cxx
Vlad Ertel
Привет. Есть тут исповедующие макросы?

Есть такой код:

#define MACRO(__x__)
static_assert(SOME_MACRO##__x__ == __x__)

#define SOME_MACRO SOME_VALUE

MACRO(lalala)

При вызове MACRO(lalala) не подставляется SOME_MACRO. Что можно с этим поделать?
(комменты что макросы - зло, в чатик для холиваров)
Очень частая задача, я даже в библиотеку велосипедов себе добавил, когда разобрался, почему это должно быть так сложно.

А холиварить о макросах можно будет, когда будет более удобная и безопасная альтернатива им для простой кодогенерации и предотвращения дублирования кода. Пока альтернативы нет, холиварить рано.
источник

FS

Flower Surgeon in pro.cxx
Vlad Ertel
Привет. Есть тут исповедующие макросы?

Есть такой код:

#define MACRO(__x__)
static_assert(SOME_MACRO##__x__ == __x__)

#define SOME_MACRO SOME_VALUE

MACRO(lalala)

При вызове MACRO(lalala) не подставляется SOME_MACRO. Что можно с этим поделать?
(комменты что макросы - зло, в чатик для холиваров)
Не про это речь? http://c-faq.com/ansi/stringize.html
источник

FS

Flower Surgeon in pro.cxx
довольно частые грабли с макросами
источник

A

Alex in pro.cxx
это из той же оперы, да
источник

NP

Nikita Provotorov in pro.cxx
а std::swap же не проверяет наличие member-функции swap у параметра?
источник

A

Alex in pro.cxx
а void* алиасит другие типы? Его присутствие в области видимости подавляет некоторые оптимизации? Или только char* так делает?
источник

АР

Андрей Руссков in pro.cxx
void* не может алиасить сам по себе )
источник

A

Alex in pro.cxx
почему же, может, к нему можно привести любой указатель
источник

АР

Андрей Руссков in pro.cxx
потому что предположение что по указателю лежит void как миниму странное. Алиаситься могут объекты, указатели на которые ты получаешь путем каста void* во что-то
источник

A

Alex in pro.cxx
Теперь понял мысль, логично. Спасибо.
источник

ПК

Побитый Кирпич in pro.cxx
Андрей Руссков
void* не может алиасить сам по себе )
Зачем тогда у memcpy такая сигнатура?

void *memcpy (void *__restrict __dest, const void *__restrict __src,  size_t __n)
источник

v

vehlwn in pro.cxx
Nikita Provotorov
а std::swap же не проверяет наличие member-функции swap у параметра?
namespace nsinteger
{
class Integer{
   void swap(Integer& rhs);
};
void swap(Integer& lhs, Integer& rhs)
{
   lhs.swap(rhs);
}
}

Почему он должен проверять члены? Почему ты используешь квалифицированный своп?
источник

NP

Nikita Provotorov in pro.cxx
vehlwn
namespace nsinteger
{
class Integer{
   void swap(Integer& rhs);
};
void swap(Integer& lhs, Integer& rhs)
{
   lhs.swap(rhs);
}
}

Почему он должен проверять члены? Почему ты используешь квалифицированный своп?
Да я не использовал ещё, просто хотел понять как там правильно свой Swappable реализовывать)
источник

PK

Pavel Kazakov in pro.cxx
Nikita Provotorov
Да я не использовал ещё, просто хотел понять как там правильно свой Swappable реализовывать)
это плохой трейт
источник

ПК

Побитый Кирпич in pro.cxx
Nikita Provotorov
Да я не использовал ещё, просто хотел понять как там правильно свой Swappable реализовывать)
Функцию swap свободную надо сделать, которая будет в том же namespace что и класс
источник