La libreria standard differenzia le versioni predicate e non predicative degli algoritmi generici. Ad esempio, std::sort()
assomiglia:Perché differenziare le versioni di predicato e non di predicato per algoritmi generici?
template< class RandomIt >
void sort(RandomIt first, RandomIt last);
template< class RandomIt, class Compare >
void sort(RandomIt first, RandomIt last, Compare comp);
C'è qualche problema nel solo scrivendo il seguente?
template< class RandomIt, class Compare = std::less<void>>
void sort(RandomIt first, RandomIt last, Compare comp = Compare{});
Non c'erano argomenti modello predefiniti per modelli di funzioni in C++ 03. –
@ T.C. Quindi, supponiamo di ridisegnare il tutto solo se la seconda forma dovrebbe essere preferita? – Lingxi
@ T.C. Credo che la cosa dell'argomento template di default sia in realtà una risposta. – Angew