商用 C++ ライブラリの大部分は、テンプレートに依存しています。製品をヘッダー ファイルと動的にリンクされたライブラリ (クローズド ソース) として販売する予定ですが、コード ベースのほとんどがヘッダーに集中しているため、事実上、簡単に交換できる小さなチャンクが欠落しているオープン ソースとしてリリースすることになります。
以下は、ライブラリ インターフェイスからのクラスの 1 つがどのように見えるかの例です。
template<class ItInput, class ItOutput>
struct serialize{
ItOutput operator() (ItInput first, ItInput last, ItOutput d_first) {
// operation on pointers (assuming that ++, -- and * operators work as expected for pointers)
}
テンプレート化されたコードに、通常のコードのコンパイルと同等またはそれ以上のレベルの難読化を提供する方法はありますか (つまり、技術的に元に戻すことはできますが、有益ではなく、最適化することもできません)。
編集: 明確にするために、私たちの目標は、ユーザーが実装を読み取れないようにすることであり、私たちの作品の違法なコピーを防ぐことではありません。質問のために、この要件には正当な理由があると仮定してください。