devxlogo

Help the Compiler Differentiate Between a Type or Non-type Expression

Help the Compiler Differentiate Between a Type or Non-type Expression

Sometimes you need to help the compiler differentiate between a type expression and a non-type expression. For example:

template void func (type t){t::Str * p;}

Now, say t represents a class type and Str represents a type member of that class. If you meant to declare a pointer of that type, the compiler will assume this expression as multiplication until the template is instantiated. So to help the compiler know this type expression, you can do this:

	template void func (type t){typename t::Str * p;}

devx-admin

Share the Post: