mateidavid / zstr

A C++ header-only ZLib wrapper
MIT License
295 stars 71 forks source link

eliminate use of std::make_unique, remove zstr_make_unique_polyfill.h #54

Closed svigerske closed 2 years ago

svigerske commented 2 years ago

While trying to use zstr in another project, there was some concern about the license of zstr_make_unique_polyfill.h: https://github.com/ERGO-Code/HiGHS/issues/786#issuecomment-1085062067

This PR replaces the use of std::make_unique<>() in zstr by equivalent code that preserves C++11 compatibility. As a consequence, zstr_make_unique_polyfill.h can be removed.

ferdymercury commented 2 years ago

Thanks for the PR. Would it help instead to use any of these alternatives:

or not really in terms of license?

ferdymercury commented 2 years ago

https://softwareengineering.stackexchange.com/a/141848

svigerske commented 2 years ago

https://github.com/root-project/root/blob/v6-24-00-patches/core/foundation/inc/ROOT/RMakeUnique.hxx seems to be LGPL, so not much different from now. It would still be difficult to say that your project is licensed under MIT license if there is a file under LGPL included. LGPL is more liberal than GPL when it comes to use the software, but that is not the same as including it somewhere else.

For https://isocpp.org/files/papers/N3656.txt, I have no idea whether one is allowed to just copy that (not that anyone would really object). From the url, it looks like it is part of some paper or discussion on the C++ standard.

The easiest way to ensure that your complete project is licensed under MIT is to avoid including code that is under different or unclear licenses (public domain should be fine). Since std::make_unique<T>(...) seems to be just a shorthand for std::unique_ptr<T>(new T(...)) or std::unique_ptr<T[]>(new T[...]), it seems easy to just avoid it.