默认初始化任意有界类型的boost变量和可选

时间:2013-07-08 21:35:20

标签: c++ boost variant optional

boost变量的默认构造函数初始化第一个有界类型。如何默认初始化除第一个以外的任何成员?一种选择是简单地分配正确类型的默认构造对象。但是,这对某些类型(如数组)不起作用。没有初始化boost::get抛出boost::bad_get异常。所以我不能在数组上做std::copy

boost::variant<std:string, int[5]> v; // default initializes the string. 

我需要像

这样的东西
initialize<int[5]>(v);

使用数组作为第一个有界类型时,我也遇到了编译问题。 Clang报告错误如下:

object expression of non-scalar type 'int [5]' cannot be used in a pseudo-destructor expression 
  operand.~T();

编辑:我对boost.optional提出了同样的问题。是否有默认初始化可选的API?我的意思是除了默认初始化T的赋值。

0 个答案:

没有答案