#include <vector>
class Original;
class View
{
public:
View(const Original *that) : m(that) {}
const Original * m;
};
class Original
{
public:
auto columns() {return View(this);}
const auto columns() const {return View(this);} // comment #1
std::vector<int> m;
};
int main()
{
Original o1;
const Original o2;
o2.columns(); // comment #2
}
I2luY2x1ZGUgPHZlY3Rvcj4KCmNsYXNzIE9yaWdpbmFsOwoKY2xhc3MgVmlldwp7CnB1YmxpYzoKICAgIFZpZXcoY29uc3QgT3JpZ2luYWwgKnRoYXQpIDogbSh0aGF0KSB7fQogICAgY29uc3QgT3JpZ2luYWwgKiBtOwp9OwoKY2xhc3MgT3JpZ2luYWwKewpwdWJsaWM6CiAgICBhdXRvIGNvbHVtbnMoKSB7cmV0dXJuIFZpZXcodGhpcyk7fQogICAgY29uc3QgYXV0byBjb2x1bW5zKCkgY29uc3Qge3JldHVybiBWaWV3KHRoaXMpO30gLy8gY29tbWVudCAjMQogICAgc3RkOjp2ZWN0b3I8aW50PiBtOwp9OwoKaW50IG1haW4oKQp7CiAgICBPcmlnaW5hbCBvMTsKICAgIGNvbnN0IE9yaWdpbmFsIG8yOwogICAgbzIuY29sdW1ucygpOyAvLyBjb21tZW50ICMyCn0=