【发布时间】:2020-07-14 21:06:17
【问题描述】:
考虑一个模板类InputBuffer:
template<class Source, size_t Capacity>
class InputBuffer
{
public:
explicit InputBuffer(Source src);
int getchar();
private:
std::byte const* m_read_ptr;
std::byte const* m_last_valid;
Source m_src;
std::array<std::byte, Capacity> m_data;
void fetchAndResetPointers();
};
问题:构造函数是否应该接受src 作为引用并存储指针而不是按值获取? 非常调用者在这里期望引用语义。但是,也有可能Source 已经是某种指针,然后,通过引用获取src 并存储指针会导致不必要的间接。如果不通过引用传递,用户可以根据需要使用std::ref。
【问题讨论】:
标签: c++ templates pass-by-reference api-design