class constant enum exception functor namespace operator overload pointer reference simple template variables