fix gcc 4.6 compile