merge proc_type to func_type
add a function to check the type is default constructible
implement class instantiation (wip)