I'm reading Scott Meyers's Effective C++ 3rd.
In item 3:
Use const whenever possible. In order to use const member function operator[],non-const member function operator[] has to do 2 cast operations:
const_cast<char&>( static_cast<const TextBlock&>(*this) [position] )
Why does Scott Meyers use static_cast<const TextBlock&>(*this) instead of static_cast<const TextBlock>(*this)?