class Widget{ ... };
bool f( const Widget& w ){ ... }

int main(){
    std::vector<Widget> v;
    std::find_if( v1.begin(), v1.end(), std::not1( std::ptr_fun( &f ) ) ); //1
    return 0;
}

1で、
error C2529: '_Left' : 参照への参照は無効です。
warning C4181: 参照型に適用された修飾子は無視されました。

とエラーが出てしまいます。どうすればうまくいきますでしょうか…?
コンテナを vector<Widget*> にして bool f( const Widget* w ) にすれば
ちゃんと動いたのですが、こうするしか解決方法はありませんでしょうか?