TypeOf

Returns the type of a variable.

Syntax
	TypeOf ( variable | datatype )

Parameters
	variable
		A variable of any type.
	datatype
		A DataTypeDataType.

Description
	TypeOf is a compiler intrinsic that replaces itself with the type of the 
	variable passed to it. It can either be used in a variable declaration 
	(Example 1) or it can be used in the preprocessor for comparison, 
	printing. (Example 2)

	TypeOf also supports passing any intrinsic data type, or user-defined 
	type (and its data fields), not only variables defined as those types. 
	Also supported are expressions, the type is inferred from the expression 
	(much like KeyPgVarVar).

	If there is both a user defined type and a variable visible with the 
	same name in the current scope, the user defined type takes precedence 
	over the variable.  To ensure that the TypeOf takes the variable instead 
	of the user defined type, wrap the argument to TypeOf with parentheses 
	to force it to be seen as an expression.  For example Typeof((variable))
	.

Example
	Example 1:
	Dim As Integer foo
	Dim As TypeOf(67.2) bar '' '67.2' is a literal double
	Dim As TypeOf( foo + bar ) teh_double '' double + integer results in double
	Print SizeOf(teh_double)
	      

	Example 2:
	Dim As String foo
	#print TypeOf(foo)
	#if TypeOf(foo) = TypeOf(Integer)
	  #print "Never happened!"
	#endif

	#if TypeOf(foo) = TypeOf(String)
	  #print "It's a String!"
	#endif
	      

Version
	* Before fbc 1.10.0, TypeOf was not returning the type of the 
	  non-static member procedures of a UDT.
	* Before fbc 1.08.0:
			TypeOf was not returning the type of the data fields of a UDT.
			When a variable from a given namespace was accessed with the 
			namespace's name prefix, the argument to TypeOf had to be wrapped 
			with parentheses to force it to be seen as an expression. For 
			example Typeof((namespace_name.variable)).

Dialect Differences
	* Not available in the CompilerOptlang-lang qb dialect unless referenced with the 
	  alias __Typeof.

Differences from QB
	* New to FreeBASIC

See also
	* KeyPgSizeofSizeOf
	* KeyPgVarVar
	* KeyPgTypeAliasType (Alias)
	* KeyPgTypeType...End Type

