[Màj question selon les exigences mises à jour]
J'ai mis en fonction suivante qui devrait revenir soit premier élément ou pas jeter nulle une exception.
Aussi pourriez-vous inventer des noms plus classiques et plus courts comme «max», «min», «paire»?C++ sélectionnez d'abord pas un élément nul
template <typename T>
T select_first_not_empty(const T& a, const T&b)
{
static T null = T();
if (a == null && b == null)
throw std::runtime_error("null");
return
a != null ? a : b;
}
int main()
{
const int a1 = 2;
const int b1 = 0;
const int* a2 = 0;
const int* b2 = new int(5);
const std::string a3 = "";
const std::string b3 = "";
std::cout << select_first_not_empty(a1, b1) << std::endl;
std::cout << select_first_not_empty(a2, b2) << std::endl;
std::cout << select_first_not_empty(a3, b3) << std::endl;
return 0;
}
Je suppose que vous vouliez faire quelque chose d'autre dans cet exemple de code. Mais vous avez mélangé quelques "valeur zéro" et "valeur par défaut" – bayda
Pourriez-vous mettre à jour votre réponse en fonction de la question mise à jour? –
Où est l'exception Thorw? –