support for non-copyable structs

Also it's not the best idea to bundle assignment and construction in a function called emplace, because the phobos emplace in only used for construction. This is what got me confused in the first place. Better replace that `new_obj` parameter with two functions.