Aplique a primeira função válida de um conjunto de N funções
Esta resposta anterior mostra como aplicar a função com base na validade de uma chamada:Aqu. No entanto, isso se aplica a duas funções. Eu queria saber se o conceito poderia ser generalizado paraN
unções usando truques de programação de modelos inteligentes, em C ++ 1
O problema é o seguinte
template <std::size_t N, class... X>
/* [Return type] */ apply_on_validity(X&&... x)
{
// Tricks here
}
// The function would be equivalent to a hypothetical
// template <std::size_t N, class... F, class... Args>
// [Return type] apply_on_validity(F&&... f, Args&&... args)
// where N = sizeof...(F) is the number of functions
No lado da execução:
apply_on_validity<3>(f1, f2, f3, a, b, c, d, e);
Seria
ligarf1(a, b, c, d, e)
se a expressão for válida, caso contrárioligarf2(a, b, c, d, e)
se a expressão for válida, caso contrárioligarf3(a, b, c, d, e)
se a expressão for válida, caso contráriofazer nadE, em todos os casos, retornaria o resultado da função que foi executad
No lado de chamada, o parâmetro do modelo3
indica o número de funções que foram especificada
É factível em C ++ 14 e, em caso afirmativo, com