c++11 does not like temporaries in constexpr functions
pull from github