Если я правильно понимаю, единственным источником осложнений является объявление структур данных, которые влекут за собой неполные типы.
Если специализация boost::interprocess::sizeof_value<>
работает, этого будет достаточно. ¹
С точки зрения надежности, легко добавить static_assert
после того, как определение Node
завершено, чтобы убедиться, что фактическое значение соответствует размеру, указанному компилятором:
static_assert(boost::interprocess::sizeof_value<Node>::value == sizeof(Node), "sizeof mismatch");
¹ У меня есть догадка, что без этого можно обойтись, но я не могу тратить время на то, чтобы прямо сейчас сделать ваш код автономным, чтобы проверить