template <> int Keyval::call_deleter<Datatype>(Datatype* obj, smpi_key_elem elem, int keyval, void * value, int* flag){
if(elem->delete_fn.type_delete_fn!=MPI_NULL_DELETE_FN){
int ret = elem->delete_fn.type_delete_fn(obj, keyval, value, flag);
template <> int Keyval::call_deleter<Datatype>(Datatype* obj, smpi_key_elem elem, int keyval, void * value, int* flag){
if(elem->delete_fn.type_delete_fn!=MPI_NULL_DELETE_FN){
int ret = elem->delete_fn.type_delete_fn(obj, keyval, value, flag);