【发布时间】:2012-12-04 09:08:52
【问题描述】:
假设我有课
template<class T>
class Vector
{
public:
Vector() = default;
inline size_t size() const { return _vector.size(); }
private :
std::vector<T> _vector;
};
有没有办法将函数(或运算符)委托给_vector,在编译时,没有开销?
我当然可以(这就是我正在做的)通过声明我需要的每个函数来转发所有内容,并且只需向成员调用适当的函数,就像我对 size() 所做的那样。
This article propose 正是我需要的。例如使用这个:
template<class T>
class Vector
{
public:
Vector() = default;
private :
std::vector<T> _vector;
public:
using _vector {
size_t size() const;
void push_back(const T&);
}
};
然后编译器会生成适当的代码。但是我没有找到这样的东西,有可能吗?
【问题讨论】:
-
我想我会因为提到它而受苦,但是私有继承和使用是可能的......
-
您的内联函数可能将在编译时转发而没有任何开销。建议的转发简写未纳入标准,因此您必须手动完成。
-
@BoPersson 是的,我只是想要一种懒惰的方式来不写它:)
标签: c++ delegates wrapper forwarding