A little bit of criticism. Code below won't compile out of the box: namespace test { struct Test; } namespace test { struct Test : Moveable<Test> { Vector<Test> children; }; } Adding of template <> inline constexpr bool is_upp_guest<test::Test> = true; won't help. You need to add template <> inline constexpr bool is_trivially_relocatable<test::Test> = true; All this stuff is inconvenient and unnatural. And I have no idea how to make code below compile. struct Test01; struct Test01 { struct Test02 : Moveable<Test02> { Vector<Test02> children; }; };
namespace test { struct Test; } namespace test { struct Test : Moveable<Test> { Vector<Test> children; }; }
template <> inline constexpr bool is_upp_guest<test::Test> = true;
template <> inline constexpr bool is_trivially_relocatable<test::Test> = true;
struct Test01; struct Test01 { struct Test02 : Moveable<Test02> { Vector<Test02> children; }; };
Report message to a moderator