私はクラスFilter
を持っていますが、これはさまざまな入力にオーバーロードされたprocess
メソッドです。すべてのオーバーロードされたメソッドのエイリアス?
template< typename T >
class Filter
{
public:
void process(T arr[], size_t len);
T process(T one_value);
void process(std::array &arr);
void process(std::vector &v);
//... many other variants
using operator() = process; // How to write proper?
}
私はprocess
を省略し、ユーザーコードを簡素化したい:filter.process(values)
はfilter(values)
なります。私はすべてのバリアントにオーバーロードされたoperator()
を書くのは良い考えだとは思わない。より便利なソリューションが存在しなければなりませんか?
:
はちょうどそうのように、代わりにコンストラクタにすべてのそれらのオーバーロードを作ります。 –
タイプチェックをバイパスすることはなく、変換もありません。 'process'は' operator() 'に与えられた引数を受け取ります。 – Niall
@DanKorn私は、現在の標準に準拠したC++コードで 'C++'タグに答えるのはかなり一般的だと思います。つまり、私は 'C++'タグがC++ 03または他の特定の標準を暗示しているとは思わない。 –