私はthe following question and its associated accepted answerのSOを読んでいたので、struct C
(typename
キーワードのないもの)の2番目のテンプレートパラメータの意味は何ですか?ここでテンプレート名の型名なし
コードです:
template<typename T, T> struct C; // Here.
template<typename T, typename R, typename ...Args, R (T::*F)(Args...)>
struct C<R (T::*)(Args...), F>
{
R operator()(T &obj, Args&&... args)
{
return (obj.*F)(std::forward<Args>(args)...);
}
};
私はコードが何をしているか知っているが、私はtypename
キーワードなしtemplate<typename T, T> struct C;
宣言とその意味の第二T
の目的を考え出していません。
誰かが私にその意味を教えてもらえますか?あなたの答えをありがとう。
そして、C++ 17は 'テンプレート構造体C;'と 'テンプレート<型名T、型名R、型名...を許容するでしょう...> Args、R(T :: * F)(Args ...)> struct C {/*...*/}; '特殊化。 –
Jarod42