Fix/const template

allow usage of `const` template arguments and generate code for `shared_ptr` with `const` template arguments.