1

basic_stringとSTLコンテナーでカスタムSecureAllocatorを使用しようとしていますが、運がほとんどありません。

typedef std::basic_string< char, std::char_traits< char >, SecureAllocator< char > > SecureString;

SecureString value = "hello, world!";

vector< SecureString > collection;

collection.push_back( value );


In file included from /Users/bcrowhurst/source/utility/string_impl.cpp:31:
In file included from /Users/bcrowhurst/build/../source/utility/string_impl.h:31:
/usr/bin/../lib/c++/v1/string:2162:19: error: invalid operands to binary expression ('allocator_type' (aka 'SecureAllocator<char>') and 'allocator_type')
        if (__alloc() != __str.__alloc())
            ~~~~~~~~~ ^  ~~~~~~~~~~~~~~~

環境

Mac OSX Lion

Apple clangバージョン3.1(tags / Apple / clang-318.0.61)(LLVM 3.1svnに基づく)

ターゲット:x86_64-apple-darwin11.4.0

スレッドモデル:posix

4

1 に答える 1

3

アロケータタイプの比較演算子を実装して、それらが「同等」であるかどうかを判断して、交換可能に使用できるようにする必要があります。

2つのアロケータを比較するための要件は次のとおりa1 == a2です。

それぞれから割り当てられたストレージが他方を介して割り当て解除できる場合にのみtrueを返します。 operator==反射的、対称的、推移的であり、例外を介して終了してはなりません。

とのためにa1 != a2

と同じ!(a1 == a2)

于 2012-07-14T15:41:36.203 に答える