0

タイトルが尋ねるように、C++ クラス テンプレートはメソッド名をテンプレート パラメーターとして使用できますか?

例えば、

template <T>
class Foo
{
public:
    void T(int bar);
};
4

1 に答える 1

2

残念ながら、C++ コア言語には名前を処理する手段がありません。

いくつかの可能性:

  • プリプロセッサを介して名前を処理します。つまり、醜いマクロです。
    注: Boost パラメーター ライブラリは、ここで非常に関連性のある文書化されていないBoost マクロの策略を使用しています。私はそれを一般的なオプションクラスのものに一度使用しました。申し訳ありませんが、あまり覚えていませんが、基本的には C++03 用の一種の可変引数マクロをサポートしています。
  • スクリプトベースなど、独自のカスタム前処理を行います。
  • どういうわけか、クライアント コード プログラマーに負担をかけます。

これが何のために必要なのか疑問に思っている人のために、プログラマーがタプル メンバーの名前を提供する、C++ での Python のライブラリの「名前付きタプル」クラスのようなものを作成する方法が適切な例です。

于 2012-10-03T03:58:35.790 に答える