次のようなものとして定義されている関数がたくさんあります。
template<typename T>
void myFunction1(vector<T>& vin);
ポイントは、STL ベクトルを入力して、いくつかの作業を行うということです。
最近、デフォルトのアロケーターを顧客のアロケーターに変更する必要がありました。定義を次のように変更しない限り、これはすべての機能を壊すようです:
template<typename T, typename Alloc>
void myFunction1(vector<T,Alloc>& vin);
さらに複雑にするために、すべてのケースでオーバーロードされたアロケーターを使用するわけではありません..
これは、すべての関数を 2 つの定義で書き直さなければならないということですか? 1 つはアロケータのテンプレートを使用し、もう 1 つはアロケータを使用しない定義です。これが答えではないことを本当に願っています...