- 654 名前:デフォルトの名無しさん mailto:sage [2006/05/25(木) 23:59:35 ]
- >>653
>>643の問題を普通のC++で解決するのが大変or不可能であることは認識している。 で、その解決策として部分特殊化でなくオーバーロードでhookを実現 できるようにする(>>646)か、メタプログラミング向けの機能を追加する(>>647) ことを考えた。 > >lazyoverloadlazyoverloadというのはoperator+を全部見てくれという意味。 > の全部というのは、名前空間を無視して全部ということでしょうか? lazyoverload宣言をした名前空間の中だけ。解決したいのは次の問題。 namespace nnn { int fff(int) { return 0; } template <class T> int good() { return fff(T()); } template <class T> int bad() { return nnn::fff(T()); } int fff(char) { return 1; } } と定義されているとき、nnn::good<char>()は1を返すけどnnn:bad<char>()は 0を返してしまう。テンプレートを定義した時点で見える関数だけでなく、 インスタンス化した時点で見える関数を全部候補にしてくれ、というのが lazyoverloadの意味。
|

|