3

私はこのテンプレートクラスを持っています:

template<typename T, T F(const std::string&)>
struct Builder
{
  T operator()(const std::string& s) const { return F(s); }
  typedef T type;
};

関数と関数によって返される値を保持するクラスが必要なため (関数への参照が必要なため)。

ご覧のとおり、2 つのテンプレート パラメーターがありますが、実際には最初のパラメーターは冗長です。何らかの方法で取り除くことは可能ですか?テンプレートエイリアス? マクロより優れたもの

4

1 に答える 1

3

Tいずれにせよ、2 番目のテンプレート パラメーターの戻り値の型は、最初に使用する前に定義する必要があります (C++ の規則では、宣言の後にのみエンティティを使用できると規定されているため)。宣言する唯一の方法は、前の型テンプレート パラメーターを使用することです (あなたが行ったように)。 ) であるため、最初のパラメーターを省略できません。

于 2015-03-13T11:27:51.173 に答える