std::generate_canonical wrote new