Size: a a a

2020 August 09

АР

Андрей Руссков... in pro.cxx
Constantine Drozdov
на самом деле сгенерится вместе с конструктором, я полагаю
да, похоже на то
источник

m

magras in pro.cxx
Побитый Кирпич
А как правильно проверит дабл на конвертируемость в integral?
Что-нибудь вроде
int cast(double d) {
 if (isnan(d))
   throw something;
 if (d < std::numeric_limits<int>::min())
   return std::numeric_limits<int>::min();
 if (std::numeric_limits<int>::max() < d)
   return std::numeric_limits<int>::max();
 return static_cast<int>(d);
}
источник

CD

Constantine Drozdov in pro.cxx
Андрей Руссков
да, похоже на то
ну это вроде известная фишка, что std::unique_ptr<incomplete> при vdtor требует определения incomplete только при использовании конструктора
источник

АР

Андрей Руссков... in pro.cxx
или деструктора
источник

CD

Constantine Drozdov in pro.cxx
Андрей Руссков
или деструктора
деструктора как раз не требует
источник

CD

Constantine Drozdov in pro.cxx
он виртуально дернется
источник

АР

Андрей Руссков... in pro.cxx
да ладно?

struct A {
   struct B;
   std::unique_ptr<B> foo;
};

Не скомпилится
источник

ПК

Побитый Кирпич... in pro.cxx
magras
Что-нибудь вроде
int cast(double d) {
 if (isnan(d))
   throw something;
 if (d < std::numeric_limits<int>::min())
   return std::numeric_limits<int>::min();
 if (std::numeric_limits<int>::max() < d)
   return std::numeric_limits<int>::max();
 return static_cast<int>(d);
}
Понял
источник

АР

Андрей Руссков... in pro.cxx
а вот

struct A {
   struct B;
   std::unique_ptr<B> foo;
   ~A();
};

Скомпилится
источник

CD

Constantine Drozdov in pro.cxx
Андрей Руссков
да ладно?

struct A {
   struct B;
   std::unique_ptr<B> foo;
};

Не скомпилится
а как использовать чисто деструктор?
источник

АР

Андрей Руссков... in pro.cxx
ну unique_ptr же необязательно знать про конструктор, ему неинтересно откуда пришел T*
источник

CD

Constantine Drozdov in pro.cxx
тут же если это автоматическая память конструктор был, а если хипа - там полиморфный вызов деструктора будет
источник

АР

Андрей Руссков... in pro.cxx
а вот в точке где удаляется unique_ptr он должен знать про деструктор
источник

CD

Constantine Drozdov in pro.cxx
Андрей Руссков
ну unique_ptr же необязательно знать про конструктор, ему неинтересно откуда пришел T*
там про vdtor именно
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄... in pro.cxx
Андрей Руссков
а вот

struct A {
   struct B;
   std::unique_ptr<B> foo;
   ~A();
};

Скомпилится
Не скомпилится же
источник

CD

Constantine Drozdov in pro.cxx
то есть если деструктор виртуален на самом деле инстанс деструктора и complete нужен в конструкторе при синтезе vtbl
источник

АР

Андрей Руссков... in pro.cxx
🎄🎊 R 🎅 Tb| ✡️ 🎊🎄
Не скомпилится же
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄... in pro.cxx
источник

АР

Андрей Руссков... in pro.cxx
ну тут конструктор A нам нужен, а конструктор B нет
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄... in pro.cxx
Андрей Руссков
ну тут конструктор A нам нужен, а конструктор B нет
А почему так? В вашем примере такого не было
источник