我有一个模板类,它依赖于两个模板参数来计算它的值,但只有一个用于构造。我想在一生中减轻对第二个的依赖。我正在通过使用模板化的静态函数来计算这些值,然后创建一个实例。该类中的所有成员都是const POD类型,并且在应用程序启动时会创建许多此类。对临时对象的静态常量引用
template < class member >
class FOO {
public:
FOO() : a(7) {};
template < class scope >
static FOO CreateFOO()
{
return FOO();
};
private:
const int a;
};
template < class member, class scope >
const FOO<member>* function()
{
static const FOO<member>& temp = FOO<member>::CreateFOO<scope>();
return &temp;
}
int main() {
const FOO<int>* b = function< int, int >();
return 0;
}
我设想的移动语义,而是因为我只含常量POD类型实在是没有任何交换和移动简单地复制和销毁。上述合理/有效吗?我读过的所有东西都表明它没问题!有一个更好的方法吗?
我看不出有任何理由使用`静态常量类型&`而不是`静const类型“。你认为它对你有什么好处? – 2011-01-06 13:51:07
我可以绑定到一个右值?没有复制? – 2011-01-06 13:52:33