はじめに
"C++でビット演算を簡単に実装する方法" を斜め読みして気になったため書きます.
過去の私の記事でStandard Template Library (STL)を引用している部分が法律を犯しているのでは?と心配になったため調べます. glibcxx, libc++, Visual Studio同梱STLが対象です.
Microsoft's C++ Standard Libraryのオープンソース化
Microsoft's C++ Standard Library は現在"Apache 2.0 License"の下配布されています. Visual Studio同梱STLとしては, Visual Studio 16 2019 以降がオープンソースのコードになります.
Visual Studio 15 2017 以前は, 使用許諾契約 (EULA)に従います.コードは公開されていないため再配布・引用はダメという理解で大丈夫なはずです.
どのバージョン同梱のSTLにも, ファイルの先頭に 著作権表記が記載されています.
Standard Template Libraryを使用する際のライセンス
ソースコードそのものを再配布する場合, 各ライセンスに従います.
プロダクトにリンクしてバイナリを配布する場合,
- GCC
- GCCランタイム・ライブラリ例外 (RLE) によってプロダクトのライセンスがGPLである必要はない
- Clang (LLVM)
- ツールがインクルード・生成・リンクした部分について, 再配布条件の一部に従わなくてよい
"LLVM Exceptions to the Apache 2.0 License"より,
As an exception, if, as a result of your compiling your source code, portions
of this Software are embedded into an Object form of such source code, you
may redistribute such embedded portions in such Object form without complying
with the conditions of Sections 4(a), 4(b) and 4(d) of the License.
- Visual Studio 16 2019
- LICENSE.txtに, "LLVM Exceptions to the Apache 2.0 License"の記載があります
まとめ
私の過去の記事は, "Visual Studio 16 2019"のSTLを参照しており, 引用の条件は満たしているため大丈夫となります.