請考慮下面的代碼:從模板參數推導並調用它的拷貝構造函數
template<class basic_ios_type>
class basic_ios_adaptor;
template<template<typename, class> class basic_ios_type, typename char_type, class traits_type>
class basic_ios_adaptor<basic_ios_type<char_type, traits_type>>
: public basic_ios_type<char_type, traits_type>
{
public:
typedef basic_ios_type<char_type, traits_type> base_type;
basic_ios_adaptor(base_type const& other)
: base_type(other)
{
}
};
唯一可用的構造是一個拷貝構造函數,這需要常量引用的基本類型。 實例:
std::ofstream x(std::ofstream("")); // ok
basic_ios_adaptor<std::ofstream> y(std::ofstream("")); // error
的Visual C++:
'的std :: basic_ios < _Elem,_Traits> :: basic_ios' :不能訪問類 「的std :: basic_ios聲明爲專用構件 < _Elem,_Traits>」
英特爾:
沒有構造 的實例 「的std :: basic_ofstream < _Elem, _Traits> :: basic_ofstream [與_Elem =炭,_Traits =標準:: char_traits]」 匹配參數列表
任何人可以解釋對我來說爲什麼這不起作用?
複製流是什麼意思?流不是容器,而是數據流。 –
@Yochai Timmer - 這不是你的代碼,它不是你的編碼標準。 –
@Yochai:不,不要用大寫開頭。命名一個以大寫開頭的C++標準類型。 –