[обновление вопроса в соответствии с обновленными требованиями]
Я внедрено следующими функциями, которая должна возвращать либо первый не нулевой элемент или бросить исключение.
Также вы могли бы придумать более классическое и более короткое имя, например «max», «min», «pair»?C++ выбрать первый не нулевой элемент
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;
}
Я думаю, вы хотели сделать что-то другое в этом примере кода. Но вы смешали некоторые «нулевые значения» и «значение по умолчанию» – bayda
Не могли бы вы обновить свой ответ в соответствии с обновленным вопросом? –
Где исключение? –