Size: a a a

cxx.Дискуссионная

2020 February 06

RM

Roy Mustang in cxx.Дискуссионная
что-то типа
uint32_t test = (1 « 2);
BIT::HAS(test, 0, 1);
Проверяет test на наличие битов (1 « 0) и (1 « 1)
источник

RM

Roy Mustang in cxx.Дискуссионная
Не могу понять, как тут T1 data сделать constexpr
источник

O

Ofee in cxx.Дискуссионная
Roy Mustang
второй тип файлов - это тоже что и первый, но только тут N экземпляров классов и лежат как key/value
N экземпляров класса... Ты сериализацию в конфиг-файл пишешь? Не нужно нас пугать, мы же ещё дети...
источник

O

Ofee in cxx.Дискуссионная
Roy Mustang
template <typename T1, typename... T2>
constexpr bool HAS(T1& var, T2&... B)
{
   constexpr auto set_func = [](auto data...) -> constexpr auto
   {
       return (static_cast<T1>(1) << data);
   };

   constexpr auto sizeargs{ sizeof...(B) };
   constexpr T1 data = set_func(B...);

   return (var & data) == data;
}
Извини, я не способен из этого кода однозначно определить, изменяются ли тут переменные, переданные по ссылке?
источник

RM

Roy Mustang in cxx.Дискуссионная
Ofee
Извини, я не способен из этого кода однозначно определить, изменяются ли тут переменные, переданные по ссылке?
Я убрал ссылку оттуда, она там не нужна
источник

O

Ofee in cxx.Дискуссионная
Roy Mustang
template <typename T1, typename... T2>
constexpr bool HAS(T1& var, T2&... B)
{
   constexpr auto set_func = [](auto data...) -> constexpr auto
   {
       return (static_cast<T1>(1) << data);
   };

   constexpr auto sizeargs{ sizeof...(B) };
   constexpr T1 data = set_func(B...);

   return (var & data) == data;
}
Для начала, я не великий волшебник с разрядом по чёрной мета-шаблонной магии, но как это должно работать? Ты принимаешь в лямбду вариадик, но используешь как обычную переменную...
>> auto data...
>> (static_cast<T1>(1) << data);
источник

W

Wild_Wind in cxx.Дискуссионная
Ostrich Corpsе
Какие 30 часов
На редкость хуёвые 30 часов, под конец вырубился. После этого сутки отсыпался и неделю ватным был.
источник

RM

Roy Mustang in cxx.Дискуссионная
Ofee
Для начала, я не великий волшебник с разрядом по чёрной мета-шаблонной магии, но как это должно работать? Ты принимаешь в лямбду вариадик, но используешь как обычную переменную...
>> auto data...
>> (static_cast<T1>(1) << data);
Да я дубовый еще в variadic template
источник

РГ

Расулходжа Ганиев in cxx.Дискуссионная
Roy Mustang
Больше смахивает на еблю слона и муравья чем на функцию для постройки абсолютного пути
тогда на что похожа?)
источник

РГ

Расулходжа Ганиев in cxx.Дискуссионная
Roy Mustang
Прикольная цветовая схема
CLion
источник

O

Ofee in cxx.Дискуссионная
Roy Mustang
Да я дубовый еще в variadic template
А какой результат-то ты хочешь получить? Мне не очевидно. Вот вообще ни капли
источник

RM

Roy Mustang in cxx.Дискуссионная
Ofee
А какой результат-то ты хочешь получить? Мне не очевидно. Вот вообще ни капли
Я же выше написал, смотри, есть у меня такой неймспейс
namespace BIT {
 template <typename T1, typename T2> void ADD (T1 &var, T2 B) {var |=  (static_cast<T1>(1) << B);}
   template <typename T1, typename T2> void SET (T1 &var, T2 B) {var =  (static_cast<T1>(1) << B);}
 template <typename T1, typename T2> bool GET (T1 &var, T2 B) {return var & (static_cast<T1>(1) << B);}  
   template <typename T1, typename T2> constexpr void REM (T1 &var, T2 B) {var &= ~(static_cast<T1>(1) << B);}
   template <typename T1, typename T2> constexpr void INVERT (T1 &var, T2 B) {var ^=  (static_cast<T1>(1) << B);}
}
источник

RM

Roy Mustang in cxx.Дискуссионная
Это для работы с битами
источник

RM

Roy Mustang in cxx.Дискуссионная
Там не хватает еще одной функции, которую я хочу добавить
источник

RM

Roy Mustang in cxx.Дискуссионная
Это проверка переменной сразу на маску
источник

O

Ofee in cxx.Дискуссионная
Roy Mustang
Я же выше написал, смотри, есть у меня такой неймспейс
namespace BIT {
 template <typename T1, typename T2> void ADD (T1 &var, T2 B) {var |=  (static_cast<T1>(1) << B);}
   template <typename T1, typename T2> void SET (T1 &var, T2 B) {var =  (static_cast<T1>(1) << B);}
 template <typename T1, typename T2> bool GET (T1 &var, T2 B) {return var & (static_cast<T1>(1) << B);}  
   template <typename T1, typename T2> constexpr void REM (T1 &var, T2 B) {var &= ~(static_cast<T1>(1) << B);}
   template <typename T1, typename T2> constexpr void INVERT (T1 &var, T2 B) {var ^=  (static_cast<T1>(1) << B);}
}
Ох... за что мне это... Возьми готовую библиотеку...
источник

RM

Roy Mustang in cxx.Дискуссионная
типа следующего примера
uint32_t test = (1 « 0) | (1 « 1);
uint32_t mask = (1 « 0) | (1 « 1);

if((test & mask) == mask){
// true
}
источник

RM

Roy Mustang in cxx.Дискуссионная
Вот HAS функция должна это делать
источник

O

Ofee in cxx.Дискуссионная
Roy Mustang
template <typename T1, typename... T2>
constexpr bool HAS(T1& var, T2&... B)
{
   constexpr auto set_func = [](auto data...) -> constexpr auto
   {
       return (static_cast<T1>(1) << data);
   };

   constexpr auto sizeargs{ sizeof...(B) };
   constexpr T1 data = set_func(B...);

   return (var & data) == data;
}
Ты скажи, какое возвращаемый тип у set_func
источник

RM

Roy Mustang in cxx.Дискуссионная
Это я тоже исправил на T1
источник