Changed is_same to not evaluate arguments. Added further metaprogramming unit tests