Since I cannot include sample code in a comment, I am adding it here as an βanswerβ, but this is not the correct answer. See patatahooligan's Link to Another Q & A Stack Overflow for a detailed explanation.
Here is an example for illustrative purposes:
#include <iostream>
static char const* hello = "hello";
struct Foo
{
char const* something() const { return hello; }
};
struct Bar
{
Foo foo;
Foo const* operator->() const { return &foo; }
};
struct Quux
{
Bar bar;
Bar const& operator->() const { return bar; }
};
struct Baz
{
Quux quux;
Quux const& operator->() const { return quux; }
};
struct Corge
{
Baz baz;
Baz const& operator->() const { return baz; }
};
int main()
{
Corge corge;
char const* s = corge->something();
std::cout << "Result is: " << s << std::endl;
}