compatiable with -std=c++0x