boost变量分布流和流错误

boost variant istringstream and stream error

本文关键字:错误 分布 变量 boost      更新时间:2023-10-16

我使用的是Visual Studio 2010 sp1。在Windows 7 中使用c++和boost 1.47

我有以下代码:

typedef boost::variant<unsigned int,int,long,double,bool,string,istringstream,int32_t,
                                 uint32_t,int64_t,uint32_t,sql::SQLString> SQLVariant;

我还试着用istream替换istringstream。我确实得到以下错误:

Error   13  error C2249: 'std::basic_ios<_Elem,_Traits>::operator =' : 
no accessible path to private member declared in virtual base 'std::basic_ios<_Elem,_Traits>'
c:program files (x86)microsoft visual studio 10.0vcincludeistream  860

如果我声明istringstream I;我不明白这个错误。如果我声明istream i2,我确实会得到类似的错误;

我做错了什么?

我需要istream或派生类的原因是,它是我正在开发的sql库。特别是,对于mysql实现,我需要isttream或istringstream来调用setBlob。。。

我找到了一个临时的解决方案,允许传递一个字符串并用该字符串初始化字符串流。然而,如果我的变体类型可以采用istream流或更好的istream ,那就太好了

谢谢,Frank

Boost报价。变体:

有界类型的要求如下:

  • CopyConstructible【20.1.3】
  • Destructor坚持无抛出异常的安全保障
  • 在变量模板实例化时完成。(请参阅boost::recursive_wrapper,了解一个接受不完整类型以启用递归变体类型的类型包装器。)

std::istringstream不可复制构造。