#include <iostream>
template <class Data>
struct Processor {
int process(const Data &data)
{
return 2;
}
int process(Data &data)
{
return 1;
}
};
int main() {
using data_type = int;
data_type non_const_data = 1;
const data_type const_data = 2;
std::cout << Processor<data_type>().process(non_const_data) << std::endl;
std::cout << Processor<data_type>().process(const_data) << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGUgPGNsYXNzIERhdGE+CnN0cnVjdCBQcm9jZXNzb3IgewoKICAgIGludCBwcm9jZXNzKGNvbnN0IERhdGEgJmRhdGEpCiAgICB7CiAgICAgICAgcmV0dXJuIDI7CiAgICB9CgogICAgaW50IHByb2Nlc3MoRGF0YSAmZGF0YSkKICAgIHsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCn07CgppbnQgbWFpbigpIHsKCiAgICB1c2luZyBkYXRhX3R5cGUgPSBpbnQ7CgogICAgZGF0YV90eXBlIG5vbl9jb25zdF9kYXRhID0gMTsKICAgIGNvbnN0IGRhdGFfdHlwZSBjb25zdF9kYXRhID0gMjsKCiAgICBzdGQ6OmNvdXQgPDwgUHJvY2Vzc29yPGRhdGFfdHlwZT4oKS5wcm9jZXNzKG5vbl9jb25zdF9kYXRhKSA8PCBzdGQ6OmVuZGw7CiAgICBzdGQ6OmNvdXQgPDwgUHJvY2Vzc29yPGRhdGFfdHlwZT4oKS5wcm9jZXNzKGNvbnN0X2RhdGEpIDw8IHN0ZDo6ZW5kbDsKCiAgICByZXR1cm4gMDsKfQ==