template <class T>
void f(T) {}
int n;
f(static_cast<int&>(n));
↑ようにキャストしても T が参照型とならないのは何故なんでしょうか?
あと、
class C {
public:
C() {}
C(const C&) { std::cout << "copy-ctor" << std::endl; }
};

template <class T>
void f(T t)
{ std::cout << &t << std::endl; }

int main()
{
C c;

std::cout << &c << std::endl;
f<C&>(c);
f(boost::cref(c));

return 0;
}
これで boost::cref は参照でわたっているにもかかわらずアドレスが
違うようなのですが、何故なのでしょうか?

VC7.1