CでのC ++テンプレートタイプAPIの慣用的なラッピング
C関数でデータストア(Hazelcast)へのアクセスを提供するC ++ APIのラップに取り組んでいるため、データストアはCのみのコードからもアクセスできます。 Mapデータ構造用のHazelcast C ++ APIは次のようになります。 auto map = hazelcastClient->client->getMap<int, string>(mapName); map.put(key, value); とテンプレートのテンプレートタイプを使用keyしvalueます。Cには利用可能なテンプレートがないため、getMap<T, U>メソッドの特殊化ごとにラッパー関数を作成することを考えました。つまり、Cタイプごとに。私があることを承知しているが、signedおよびunsignedCタイプのバージョンは、私だけをサポートするAPIを制限して大丈夫だよint、double、float、char *のためにkeyとvalue。 そこで、すべての組み合わせを自動生成する小さなスクリプトを書きました。エクスポートされた関数は次のようになります。 int Hazelcast_Map_put_int_string( Hazelcast_Client_t *hazelcastClient, const char *mapName, int key, char *value, char** errptr ); int Hazelcast_Map_put_int_int( Hazelcast_Client_t *hazelcastClient, const char *mapName, int key, int value, char** errptr ); ... 機能の生成get、set、containsすべての可能な組み合わせとkeyし、value種類は非常に多くのコードの量を増加させ、そして、私はコードを生成することは良いアイデアだと思いますが、それはコード生成インフラのいくつかの種類を作成することによって、追加の複雑さを追加します。 私が想像できるもう1つのアイデアは、次のようなCの一般的な関数の1つです。 int …