今、boost の weak_ptr のソースを読んでいて、
(文法レベルで)ちょっとわからない事があったのですが、
コンストラクタの引数の

template<typename Y>
weak_ptr(weak_ptr<Y> const & r)

という書き方、これは一体何を表しているのでしょうか?
生のポインタなら Y* const はわかるのですが、それって対応するのは
weak_ptr<const Y> ですよね?
ポインタ自体が const なら const weak_ptr<Y> ですよね?
weak_ptr<Y> const& っていうのは何を表しているんでしょうか?