#include <iostream>
using namespace std;
template <class T>
auto Max(T a, T b) {
return a > b ? a : b;
};
struct box {
double height;
double width;
double length;
double volume;
};
void setVolume(box &b) {
b.volume = b.height * b.width * b.length;
}
template<>
auto Max<box>(box b1, box b2) { //Ошибка
return b1.volume > b2.volume ? b1.volume : b2.volume;
}
int main() {
box b1 = { 5, 4, 2 };
box b2 = { 10, 10, 2 };
setVolume(b1);
setVolume(b2);
cout << Max(b1, b2) << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnRlbXBsYXRlIDxjbGFzcyBUPgogICAgYXV0byBNYXgoVCBhLCBUIGIpIHsKICAgICAgICByZXR1cm4gYSA+IGIgPyBhIDogYjsKICAgIH07CgpzdHJ1Y3QgYm94IHsKICAgIGRvdWJsZSBoZWlnaHQ7CiAgICBkb3VibGUgd2lkdGg7CiAgICBkb3VibGUgbGVuZ3RoOwogICAgZG91YmxlIHZvbHVtZTsKfTsKCnZvaWQgc2V0Vm9sdW1lKGJveCAmYikgewogICAgYi52b2x1bWUgPSBiLmhlaWdodCAqIGIud2lkdGggKiBiLmxlbmd0aDsKfQoKdGVtcGxhdGU8PgphdXRvIE1heDxib3g+KGJveCBiMSwgYm94IGIyKSB7IC8v0J7RiNC40LHQutCwCiAgICByZXR1cm4gYjEudm9sdW1lID4gYjIudm9sdW1lID8gYjEudm9sdW1lIDogYjIudm9sdW1lOwp9CgppbnQgbWFpbigpIHsKICAgIGJveCBiMSA9IHsgNSwgNCwgMiB9OwogICAgYm94IGIyID0geyAxMCwgMTAsIDIgfTsKICAgIHNldFZvbHVtZShiMSk7CiAgICBzZXRWb2x1bWUoYjIpOwogICAgY291dCA8PCBNYXgoYjEsIGIyKSA8PCBlbmRsOwp9Cg==