add C++03 support