Здравствуйте. Отмечу сразу, что знаю про всякие там промисы с фьючами. В структурах методы обычно не объявляю, для краткости, чтобы не париться с видимостью.
struct Q{
struct T : std::thread{
using std::thread::thread;
~T() { if(this->joinable()) this->join(); }
}t;
struct ITC{ std::atomic<bool> val; }itc;
static void fn(ITC *) {/*while(ture); используем itc*/}
Q(): t{fn, &itc} {}
};
struct S{
int i;
}s{3};
s.~S();
std::cout << s.i << '\n'; // допустимо ли использовать s учитывая то, что он trivial destructable?