c++ - Default function that just returns the passed value? -
as lazy developer, use trick specify default function:
template <class type, unsigned int size, class function = std::less<type> > void arrange(std::array<type, size> &x, function&& f = function()) { std::sort(std::begin(x), std::end(x), f); } but have problem in particular case, following:
template <class type, unsigned int size, class function = /*something 1*/> void index(std::array<type, size> &x, function&& f = /*something 2*/) { (unsigned int = 0; < size; ++i) { x[i] = f(i); } } in case, default function equivalent of: [](const unsigned int i){return i;} (a function returns passed value).
in order that, have write instead of /*something 1*/ , /*something 2*/?
there no standard functor this, easy enough write (though exact form dispute):
struct identity { template<typename u> constexpr auto operator()(u&& v) const noexcept -> decltype(std::forward<u>(v)) { return std::forward<u>(v); } }; this can used follows:
template <class type, std::size_t size, class function = identity> void index(std::array<type, size> &x, function&& f = function()) { (unsigned int = 0; < size; ++i) { x[i] = f(i); } }
Comments
Post a Comment