support const reference