#include <iostream>
#include <sstream>
struct result {
double val;
bool err;
std::string err_val;
};
std::istringstream& operator>>(std::istringstream &iss, result &r) {
double lhs, rhs;
char op;
iss >> lhs >> op >> rhs;
if (op == '+') {
r.val = lhs + rhs;
r.err = false;
} else {
r.err = true;
r.err_val = "I can only handle addition!";
}
return iss;
}
int main() {
std::istringstream iss("1+2");
result res;
iss >> res;
std::cout << "Result is: " << res.val << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3N0cmVhbT4KCnN0cnVjdCByZXN1bHQgewoJZG91YmxlIHZhbDsKCWJvb2wgZXJyOwoJc3RkOjpzdHJpbmcgZXJyX3ZhbDsKfTsKCnN0ZDo6aXN0cmluZ3N0cmVhbSYgb3BlcmF0b3I+PihzdGQ6OmlzdHJpbmdzdHJlYW0gJmlzcywgcmVzdWx0ICZyKSB7Cglkb3VibGUgbGhzLCByaHM7CgljaGFyIG9wOwoJaXNzID4+IGxocyA+PiBvcCA+PiByaHM7CgkKCWlmIChvcCA9PSAnKycpIHsKCQlyLnZhbCA9IGxocyArIHJoczsKCQlyLmVyciA9IGZhbHNlOwoJfSBlbHNlIHsKCQlyLmVyciA9IHRydWU7CgkJci5lcnJfdmFsID0gIkkgY2FuIG9ubHkgaGFuZGxlIGFkZGl0aW9uISI7Cgl9CglyZXR1cm4gaXNzOwp9CgppbnQgbWFpbigpIHsKCXN0ZDo6aXN0cmluZ3N0cmVhbSBpc3MoIjErMiIpOwoJcmVzdWx0IHJlczsKCWlzcyA+PiByZXM7CgkKCXN0ZDo6Y291dCA8PCAiUmVzdWx0IGlzOiAiIDw8IHJlcy52YWwgPDwgc3RkOjplbmRsOwoJCglyZXR1cm4gMDsKfQ==