fixed decltype gcc46 compilation bug