Added #undef for TEMPLATE, and cleaned formatting of COPY_CONSTRUCTOR macro