我正在閱讀SO上的the following question and its associated accepted answer,我想知道struct C
(沒有typename
關鍵字的那個)的第二個模板參數是什麼意思。沒有typename的模板參數
下面是代碼:
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)...);
}
};
我知道代碼是做什麼,但我沒有想出template<typename T, T> struct C;
聲明及其含義的第二T
的目的,而不typename
關鍵字。
有人能告訴我它的含義嗎?感謝您的回答。
和C++ 17將允許'template struct C;'和'template struct C {/*...*/};'專業化。 –
Jarod42