Instead of rolling our own, use the C++11 sanctioned solution