我一直在研究使用Boost.Interprocess来创建磁盘支持的数据结构.Boost文档(http://www.boost.org/doc/libs/1_41_0/doc/html/interprocess.html)上的示例都是为了使用共享内存,即使他们提到也可以使用内存映射文件.我想知道这里是否有人使用过内存映射文件?任何可公开获得的代码示例(例如,内存映射文件支持的映射或集)?
有人可以在下面的代码中解释(可能是我认为的)错误差异吗?基本上为什么"// OK"没问题和"//错误"错误?
(编译器是i686-apple-darwin9-g ++ - 4.0.1(GCC)4.0.1(Apple Inc. build 5490))
#include <cmath>
#include <iosfwd>
template <typename T>
class TT{
char _c[sizeof(T) + static_cast<size_t>(::ceil(sizeof(T) * 0.001)) + 1]; // error: array bound is not an integer constant
//char _c[sizeof(T) + static_cast<size_t>(sizeof(T) * 0.001) + 1]; // OK
T _t;
};
class IS{
unsigned char* _u;
double _d;
};
char s[static_cast<size_t>(::ceil(sizeof(TT<IS>) * 10.0))]; // error: array bound is not an integer constant
int main(int argc, char** argv){
char a[static_cast<size_t>(10.0)]; // OK
char b[static_cast<size_t>(::ceil(sizeof(double) …Run Code Online (Sandbox Code Playgroud)