私が理解できる限り、古いstack_allocアロケーターを置き換える新しいHinnant の short_alloc アロケーターを試してみたいと思います。ただし、ベクトルの例をコンパイルすることはできません。言います:g++
~# g++ -std=c++11 stack-allocator-test.cpp -o stack-allocator-test
In file included from stack-allocator-test.cpp:6:0:
short_alloc.h:11:13: error: ‘alignment’ is not a type
short_alloc.h:11:22: error: ISO C++ forbids declaration of ‘alignas’ with no type [-fpermissive]
short_alloc.h:11:22: error: expected ‘;’ at end of member declaration
私が知る限り、g++
とについて不平をline 10
言う11
:
static const std::size_t alignment = 16;
alignas(alignment) char buf_[N];
コンパイラはalignasの「式バージョン」を好まないようですが、「type-id バージョン」だけを期待しています。
g++ 4.7.2
Ubuntu 12.10で使用しています。
~# g++ --version
g++ (Ubuntu/Linaro 4.7.2-2ubuntu1) 4.7.2
おそらく私は明らかな何かを見逃していますが、それを理解することはできません。どんな助けでも大歓迎です。(新しいバージョンにアップグレードしなければならないなんて言わないでください。私はg++
怠け者です :)