|
|
|
|
|
by humanrebar
4437 days ago
|
|
> The other downside to their approach is that you have to pass the function into the constructor every time you construct an object. That's why the suggest a make_window function at the bottom of the post. The end-user just calls: auto window = sdl2::make_window("Title", /* window sizes and stuff */);
The optimizer should inline all the extra wrappers away, so there's no overhead for doing as the article suggests. |
|
It also obscures the type of the object. That can be okay if it's only used as a temporary local, but problematic if you ever need to store it as a member or return it from another function. The type signature is verbose and not very descriptive, either. Compare that to:
If you wanted to do something like what they have, I would create a variant on C++14's std::make_unique. That could look like: That looks a lot cleaner to me, at least. And instead of having to write a new function for each type, you just add a new deleter_traits specialization.(I haven't actually compiled any of this so it's probably riddled with syntax errors... hopefully the point still comes across!)