Block a user
remove __PICONTAINERS_SIMPLE_TYPE__
у тебя на 3 строки 5 строк описания дефайна, мне это кажется нелогичным, не говоря от том что макросы нужно использовать только по необходимости, коей здесь не видно
remove __PICONTAINERS_SIMPLE_TYPE__
не читаемый код получается, и к тому же кода больше чем если ты эту строку вставишь в функцию
remove __PICONTAINERS_SIMPLE_TYPE__
Пихать в static_assert std::is_trivially_copyable::value мне кажется лишним, другой туда не попадёт, наглядней будет static_assert(false) или static_assert(0). Ещё предлагаю в сообщение запихнуть имя типа, а то не понятно на что он сработал.
remove __PICONTAINERS_SIMPLE_TYPE__
тут правильнее во всех функциях использовать final вместо override