C ++ライブラリの優れたAPIデザインについて学び、共有オブジェクト/ dllなどを調べるための優れたリソースを探しています。ソースレベルでの優れたAPI、優れたクラス、テンプレートなどの記述に関する多くのリソースがありますが、共有ライブラリと実行可能ファイルに物事をまとめる。John LakosのLarge-Scale C ++ Software Designのような本は興味深いものですが、非常に時代遅れです。
私が探しているのは、テンプレートの取り扱いに関するアドバイスです。APIのテンプレートでは、実行可能ファイル(または他のライブラリ)にライブラリコードが含まれることが多いため、そこでバグを修正すると、新しいライブラリを単純に展開することはできませんが、そのコードのすべてのクライアントを再コンパイルして再配布する必要があります。(そして、はい、少なくともライブラリ内の最も一般的なバージョンをインスタンス化するなどのいくつかのソリューションを知っています。)
また、C ++ライブラリでの作業中にバイナリ互換性を維持するために注意すべき他の注意事項や事柄も探しています。
そのようなことに関する良いウェブサイトや本はありますか?
std::unique_ptr
かなり新しいものです。提案されたAPIについて、より適切だと思いましたか?すべてのリソースを手動で管理する必要があり、たとえばリークや二重削除を事実上保証する方法はありますか?または、あなたのタイプの多くが1つまたは2つの文字名を持っていて、それらの目的を占うことを不可能にする方法は?
unique_ptr
ていた場合、そのようなコードを記述することはできません。