関数(グローバル関数またはメンバ関数のいずれか)はそのパラメータでのみオーバーロードされる(そのオーバーロードは常にconstまたはすべてconstでないようにする) 。指定されたパラメータに従って過負荷アドレスを選択するテンプレートを作成する方法はありますか?たとえば:パラメータでオーバーロードアドレスを見つける
struct Foo {
double bar(double n, double m);
int bar(int n, int m);
};
auto addressDouble = find_overload<&Foo::bar, double, double>::address;
auto addressInt = find_overload<&Foo::bar, int, int>::address;
は、私が見つけた面白い答えはhereですが、残念ながらそれだけで右のオーバーロードへの呼び出しを転送し、それが後で使用できるように、実際に過負荷アドレスを取得しませ扱います。
最後の注意:完璧なソリューションは、リリースされたClangバージョンで動作するはずです。この要件とは別に、使用可能なC++ 1z以下の機能を使用できます。
_これはグローバル関数またはメンバ関数_です。その答えは、自由な機能の必要性に対処していません。 – skypjack
@skypjackはい、それは無料の機能に対処しませんが、ここでの主な目的は、その実装方法についての基本的な考え方を提供することです。 OP自身が要件を満たすために提供されたソリューションを変更して拡張することができます – MRB
私はダウン投票の理由はありません。下投票のための説明を提供する方が良いです。 – MRB