Size: a a a

AI Cups Official

2020 November 11

DD

Dmitry Dolgopolov in AI Cups Official
меня тож можно
источник

IL

Ilya L in AI Cups Official
Dmitriy
народ, нужна помощь с шаблонами в С++ 😅
кого можно в ЛС отвлечь ?
а почему не тут
источник

IL

Ilya L in AI Cups Official
больше народу - больше вероятность помочь
источник

IL

Ilya L in AI Cups Official
и дублировать не надо
источник

D

Dmitriy in AI Cups Official
есть шаблонная структура :
template<typename T>
struct val_T_bit {
   void operator=(T val) {
       *reinterpret_cast<T*>(this) = val;
   }
}

template<typename T>
struct Test : public val_T_bit<int> {
   Test() { *this = 0; }
}
источник

D

Dmitriy in AI Cups Official
ругается на *this = 0
источник

D

Dmitriy in AI Cups Official
если преобразовать через статик_каст к наследуемому типу то норм...
как-то это обойти можно ?..
источник

DD

Dmitry Dolgopolov in AI Cups Official
using Base::operator=?
источник

DD

Dmitry Dolgopolov in AI Cups Official
можно узнать, что ты хочешь получить в итоге? код с запашком
источник

D

Dmitriy in AI Cups Official
есть несколько структур разного размера (8-16-32-64 bit), которые хранят внутри набор флагов или данных и я хочу обращаться к ним, как к обычной переменной
источник

D

Dmitriy in AI Cups Official
Dmitry Dolgopolov
using Base::operator=?
это куда и как ? 😅
источник

DD

Dmitry Dolgopolov in AI Cups Official
в struct Test : ... {
 using val_T_bit<int>::operator=;
источник

D

Dmitriy in AI Cups Official
Dmitry Dolgopolov
в struct Test : ... {
 using val_T_bit<int>::operator=;
сработало 👍
источник

SA

Samat Agishev in AI Cups Official
Dmitriy
есть шаблонная структура :
template<typename T>
struct val_T_bit {
   void operator=(T val) {
       *reinterpret_cast<T*>(this) = val;
   }
}

template<typename T>
struct Test : public val_T_bit<int> {
   Test() { *this = 0; }
}
источник

D

Dmitriy in AI Cups Official
схоронил, гляну позже
источник

ЕС

Егор Сергеев... in AI Cups Official
Dmitriy
есть шаблонная структура :
template<typename T>
struct val_T_bit {
   void operator=(T val) {
       *reinterpret_cast<T*>(this) = val;
   }
}

template<typename T>
struct Test : public val_T_bit<int> {
   Test() { *this = 0; }
}
В такой структуре неплохо бы иметь какие-то данные размера Т. Иначе при присваивании можно залезть в чужую память
источник

DD

Dmitry Dolgopolov in AI Cups Official
даже при этом непонятно, как поведет себя код... там и this можно переписать
источник

ЕС

Егор Сергеев... in AI Cups Official
Dmitry Dolgopolov
даже при этом непонятно, как поведет себя код... там и this можно переписать
this не перепишется, ибо не хранится
источник

ЕС

Егор Сергеев... in AI Cups Official
Если бы там были virtual методы то можно было бы переписать vtable, но их нет
источник

ЕС

Егор Сергеев... in AI Cups Official
Как мне кажется там может быть даже полностью полностью определенное поведение. Но надо курить стандарт
источник