Looks like the C++ compiler wasn't extending the life of values.eval() like I expected