Давайте теперь попробуем реализовать вариантный тип, позволяющий хранить произвольные типы данных. При этом, для простых типов размером <=16 байт, хранение должно осуществляться в самом объекте. Во всех остальных случаях должен храниться указатель. При этом должна быть реализована логика работы "умных указателей".