add a fallback system for non-c++11