【发布时间】:2012-07-26 14:13:18
【问题描述】:
make_pair 可以在不提及类型的情况下创建对。我想对我的类使用相同的技巧,但它继承自 boost::noncopyable,因此无法编译:
template<class Iter>
struct bit_writer : boost:noncopyable
{
Iter iter;
bit_writer(Iter iter)
: iter(iter)
{}
};
template<class Iter>
bit_writer<Iter> make_bit_writer(Iter iter)
{
return bit_writer<Iter>(iter);
}
vector<char> vec;
auto w = make_bit_writer(vec);
还有其他选择吗?我试着让 make_bit_writer 成为朋友,然后就没有了想法。
【问题讨论】:
-
假设您不想通过某种指针(最好是智能指针)返回,是否可以使 bit_writer 成为仅移动类?实际上,您基本上是在告诉编译器创建一个临时文件并将其返回,但该临时文件既不能移动也不能复制。
-
你试过宏吗? :-D(开个玩笑……)
标签: c++ std-pair noncopyable