【发布时间】:2010-11-09 12:36:00
【问题描述】:
我面临以下问题。考虑以下类:
//Will be similar to bost::reference_wrapper
template<class T>
class Ref {
public:
explicit Ref(T& t) : m_ptr(&t) {}
private:
T* m_ptr;
};
这个函数返回一个双精度
double fun() {return 1.0;}
如果我们现在有
double x = 1.0;
const double xc = 1.0;
Ref<double> ref1(x); //OK
Ref<const double> refc1(cx); //OK
不过目前还不错:
//Ref<double> ref2( fun() ); //Fails as I want it to
Ref<const double> refc2( fun() ); //Works but I would like it not to
有没有办法修改 Ref(你喜欢的方式)而不是函数 fun,这样最后一行返回编译时错误? 请注意,您可以修改构造函数签名(只要我能够按预期初始化 Ref)。
【问题讨论】:
标签: c++ boost metaprogramming