cpp11 custom type_list