C++11 compatible