AFAIK, changing a const variable results in undefined behavior and can only be done with unions, pointer arithmetic, const_cast, or placement new.

Mutable just means a member of a class/struct will never be const:
Code:
struct MyStruct
{
            int a;   // Const-ness of 'a' depends on instantion
   mutable  int b;   // 'b' is never const (even if instance is const)
   const    int c;   // 'c' is always const (even if instance isn't const)
};