C++は難しすぎ 難易度:2at TECH
C++は難しすぎ 難易度:2 - 暇つぶし2ch660:デフォルトの名無しさん
06/05/27 02:46:12
ライブラリ設計を考える上でユーザの使い勝手は非常に重要で,
そして hook をユーザにどう提供させるかはまさにライブラリの
インタフェース設計そのもので,ユーザの使い勝手に直結する部分だと思います.
今ここで議論されている方々は造詣が深く,
hook の提供における問題点を把握され整理されておられるので,
>>646 >>647 >>657 といった手法も自然に受け入れられ,
各々の手法の長短も理解されておられますが,
世間一般の大多数から見れば非常に理解しづらい難解な問題であり,
ライブラリ利用者の立場でこれらの手法を利用して
hook を提供しようとする場合,大多数はいわゆるバッドノウハウ,要するに
「関心のある問題の解決に直結しない,不必要に難しい手法と知識」
としか評価してくれないかと思います.
そしてこれはそのままライブラリ全体の評価に直結すると思います.
こういった,特にライブラリを利用する上でのバッドノウハウは
うまく隠蔽できるならばそれに越したことはないかと思います.
ADL hook はもちろん色々な問題は抱えますが, 利用者の立場から見れば,
他の手法と比較しても,次善策としてはある程度妥協できるレベルに
あるんじゃないでしょうか?

Boost.Serialization では,アーカイブのバージョンを指定する引数に
>>657 で示されているような hack を巧妙に隠蔽することで,
two-phase lookup での問題を解決しつつ, hook のためのオーバーロードを
boost::serialization 名前空間に集約させることに成功していますが
(ライブラリ作者の名前から Ramey trick とか呼ばれることもあります),
あのレベルに到達して初めてライブラリのインタフェースとしては
成功と言えるのではないかと思っています.
もちろん,あの手法は非常に特殊な状況で偶発的に成功した例だと思いますので,
汎用性が全く欠けていて応用が利かないのですが…….


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch