compatibility with C++98