将std :: vector <bool>添加到容器的Variant </bool>

时间:2013-05-22 09:10:14

标签: c++ boost c++98

我正在包装一个C接口,它有一个返回Value*对象的加载函数,该对象指向Value个对象的动态数组:

typedef struct Value {
    union {
        int8_t   i8;
        int16_t  i16;
        int32_t  i32;
        int64_t  i64;
        bool     b;
    } value;
} Value_T;

给定数组中的对象始终具有相同的类型。

我的想法是在C ++中表示如下:

typedef boost::variant<std::vector<bool>, std::vector<int8_t>, std::vector<int16_t>, std::vector<int32_t>, std::vector<int64_t>, std::vector<std::string> > Container;

这是否合理?我应该注意哪些陷阱?有关如何定义bool的编译器特定问题吗?我意识到std :: vector在内部使用位表示,并且在这方面存在其他问题。

我正在使用C ++ 98编译器。

2 个答案:

答案 0 :(得分:2)

由于您已经在使用Boost,因此最好只使用boost::containers::vector<bool>。该容器将具有您真正想要的行为。

答案 1 :(得分:1)

boost::variant与类型无关,无论std::vector<bool>实现的详细信息如何,都应该有效。