#include <cstddef>
template<typename T, size_t N>
class MatBase
{
public:
static constexpr size_t order = N;
using MapFn = T (*)(T);
using ReduceFn = T (*)(T, T);
using value_type = T;
MatBase() = default;
virtual ~MatBase() = default;
virtual void Map(MapFn&& fn) {}
virtual T Reduce(ReduceFn&& fn) {}
};
int main()
{
MatBase<int, 3> m;
return 0;
}
I2luY2x1ZGUgPGNzdGRkZWY+Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgTj4KY2xhc3MgTWF0QmFzZQp7CnB1YmxpYzoKCXN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG9yZGVyID0gTjsKCgl1c2luZyBNYXBGbiA9IFQgKCopKFQpOwoJCgl1c2luZyBSZWR1Y2VGbiA9IFQgKCopKFQsIFQpOwoKCXVzaW5nIHZhbHVlX3R5cGUgPSBUOwoKCU1hdEJhc2UoKSA9IGRlZmF1bHQ7Cgl2aXJ0dWFsIH5NYXRCYXNlKCkgPSBkZWZhdWx0OwoKCXZpcnR1YWwgdm9pZCBNYXAoTWFwRm4mJiBmbikge30KCgl2aXJ0dWFsIFQgUmVkdWNlKFJlZHVjZUZuJiYgZm4pIHt9Cn07CgppbnQgbWFpbigpCnsKCU1hdEJhc2U8aW50LCAzPiBtOwoJcmV0dXJuIDA7Cn0=