std::exception しか投げられないと

void find_(tree *t, int key) {
  if (t->val == key) throw t;
  else if (!t->left) find_(t->left, key);
  else if (!t->right) find_(t->right, key);
}

みたいなコードが書けなくて困るだろ。