make_pair可以創建對而不提及類型。我想爲我的班級使用相同的技巧,但它繼承自boost :: noncopyable,所以這不會編譯:make_pair類似於不可複製類的技巧
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成爲移動類?實際上,你基本上是告訴編譯器創建一個臨時的並返回它,但臨時的既不能被移動也不能被複制。 – 2012-07-27 21:07:16
C++ 11是一個選項嗎? – Flexo 2012-07-27 21:08:06
您是否嘗試過宏? :-D(只是在開玩笑...) – Mehrdad 2012-07-27 21:23:13