Ich lerne Vorlagen aus Buch: C++ Vorlagen, Der vollständige Leitfaden (Vandevoorde, Josuttis). In Kapitel 15.1.3. Beispiel hierfür ist die folgende:Parametrisierte Eigenschaften C++
// traits/accum5.hpp
#ifndef ACCUM_HPP
#define ACCUM_HPP
#include "accumtraits4.hpp"
template <typename T,
typename AT = AccumulationTraits<T> >
class Accum {
public:
static typename AT::AccT accum (T const* beg, T const* end) {
typename AT::AccT total = AT::zero();
while (beg != end) {
total += *beg;
++beg;
}
return total;
}
};
#endif // ACCUM_HPP
Wie es oft der Fall, wir Komfortfunktionen einführen können die Schnittstelle zu vereinfachen:
template <typename T>
inline
typename AccumulationTraits<T>::AccT accum (T const* beg,
T const* end)
{
return Accum<T>::accum(beg, end);
}
template <typename Traits, typename T>
inline
typename Traits::AccT accum (T const* beg, T const* end)
{
return Accum<T, Traits>::accum(beg, end);
}
Dies ist Punkt, wo ich habe verloren. Kann jemand erklären, wie die zweite Schnittstellenfunktion funktioniert, warum ist es eine gute Idee, sie zu verwenden, wann ist sie nützlich und wie wird sie aufgerufen?
danke!
OK. Aber was sagt dein Buch? –
sie sagen nur: Wie oft der Fall, können wir Komfortfunktionen einführen, um die Schnittstelle zu vereinfachen das ist es –