add ERR_CHECK EXPR_VAL
some modified
add MetaProgramming.h DEF_HAS_ macro