#pragma once #include #define PD_SMART_CTOR(type) \ using Ref = std::shared_ptr; \ template \ static Ref New(args&&... cargs) { \ return std::make_shared(std::forward(cargs)...); \ }