This documentation is automatically generated by online-judge-tools/verification-helper
View the Project on GitHub kmyk/competitive-programming-library
#include "monoids/dual.hpp"
#pragma once
/**
* @see http://hackage.haskell.org/package/base/docs/Data-Monoid.html#t:Dual
*/
template <class Monoid>
struct dual_monoid {
typedef typename Monoid::value_type value_type;
Monoid base;
value_type unit() const { return base.unit(); }
value_type mult(const value_type & a, const value_type & b) const { return base.mult(b, a); }
};
#line 2 "monoids/dual.hpp"
/**
* @see http://hackage.haskell.org/package/base/docs/Data-Monoid.html#t:Dual
*/
template <class Monoid>
struct dual_monoid {
typedef typename Monoid::value_type value_type;
Monoid base;
value_type unit() const { return base.unit(); }
value_type mult(const value_type & a, const value_type & b) const { return base.mult(b, a); }
};