C++98 version