smart data types library and compile-time visitor