class LongLived {};

class Foo
{
  public:
    Foo(LongLived& mutableLongLived)
    : mMutableLongLived(mutableLongLived)
    {}

    LongLived& GetC1() { return GetC1Private(); }
    const LongLived& GetC1() const { return GetC1Private(); }

  private:
    LongLived& GetC1Private() const {
    	// pretend a bunch of lines of code instead of just returning a single variable
    	return mMutableLongLived;
    }

    LongLived& mMutableLongLived;
};

int main() {
	LongLived longLiver;
	const Foo foo(longLiver);
	foo.GetC1();
	return 0;
}