don't require C++11