c++ - boost 变体 istringstream 和流错误

标签 c++ visual-studio-2010 boost c++11 boost-variant

我使用的是 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.0\vc\include\istream  860

如果我声明istringstream i;我没有得到错误。如果我声明 istream i2,我确实会收到类似的错误;

我做错了什么?

我需要 istream 或派生类的原因是我正在使用的 sql 库。具体来说,对于 mysql 实现,我需要一个 istream 或 istringstream 来调用 setBlob...

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

谢谢, 弗兰克

最佳答案

引用自 Boost.Variant:

有界类型的要求是 as follows :

  • CopyConstructible [20.1.3]。
  • 析构函数支持不抛出异常的安全保证。
  • 在变体模板实例化时完成。 (有关接受不完整类型以启用递归变体类型的类型包装器,请参阅 boost::recursive_wrapper。)

std::istringstream 不可复制构造。

关于c++ - boost 变体 istringstream 和流错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11453538/

相关文章:

asp.net-mvc - 如何在新的 Asp.Net MVC 3 项目对话框中添加自定义项目模板?

c++ - boost 日志到文件不起作用

c++ - 将 vector vector 结构的 vector 写入二进制文件

c++ - "std::cout"在 Android-ndk 中是否可用

c++ - 调试 .Net 和 C++ 应用程序

c# - 模拟基于 Atom 的 pc 环境

c++ - 在 sqlite3 C++ 中批量插入的更好方法

c# - Visual Studio 2010 Locals 窗口红色字体

c++ - 使用 boost c++ ublas 矩阵和 vector 类型进行元素运算

c++ - 未定义的 boost 引用