without C++11 lib