#include <iostream>
#include <vector>
class A {
public:
std::vector<int>& get()
{
std::cout << "A::get()" << std::endl;
return myVector;
}
const std::vector<int>& get() const
{
std::cout << "A::get() const" << std::endl;
return myVector;
}
private:
std::vector<int> myVector;
};
int main()
{
A myA;
myA.get().push_back(1);
for (const auto& v: myA.get()) { } // it involve not const get method
// force application to const instance
std::cout << "use const reference to instance" << std::endl;
{ const A &myAC = myA;
for (const auto& v: myAC.get()) { } // it involve not const get method
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKY2xhc3MgQSB7CiAgcHVibGljOgogICAgc3RkOjp2ZWN0b3I8aW50PiYgZ2V0KCkKICAgIHsKICAgICAgc3RkOjpjb3V0IDw8ICJBOjpnZXQoKSIgPDwgc3RkOjplbmRsOwogICAgICByZXR1cm4gbXlWZWN0b3I7CiAgICB9CiAgICBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+JiBnZXQoKSBjb25zdAogICAgewogICAgICBzdGQ6OmNvdXQgPDwgIkE6OmdldCgpIGNvbnN0IiA8PCBzdGQ6OmVuZGw7CiAgICAgIHJldHVybiBteVZlY3RvcjsKICAgIH0KCiAgcHJpdmF0ZToKICAgIHN0ZDo6dmVjdG9yPGludD4gbXlWZWN0b3I7Cn07CgppbnQgbWFpbigpCnsKICBBIG15QTsKICBteUEuZ2V0KCkucHVzaF9iYWNrKDEpOwogIGZvciAoY29uc3QgYXV0byYgdjogbXlBLmdldCgpKSB7IH0gLy8gaXQgaW52b2x2ZSBub3QgY29uc3QgZ2V0IG1ldGhvZAogIC8vIGZvcmNlIGFwcGxpY2F0aW9uIHRvIGNvbnN0IGluc3RhbmNlCiAgc3RkOjpjb3V0IDw8ICJ1c2UgY29uc3QgcmVmZXJlbmNlIHRvIGluc3RhbmNlIiA8PCBzdGQ6OmVuZGw7CiAgeyBjb25zdCBBICZteUFDID0gbXlBOwogICAgZm9yIChjb25zdCBhdXRvJiB2OiBteUFDLmdldCgpKSB7IH0gLy8gaXQgaW52b2x2ZSBub3QgY29uc3QgZ2V0IG1ldGhvZAogIH0KICByZXR1cm4gMDsKfQ==