开发者

Why must we do template <class/typename> T instead of just template T

开发者 https://www.devze.com 2023-03-16 19:16 出处:网络
Instead of template <typename T> void func(T arg) {/* something */} why can\'t we do template <T>

Instead of

template <typename T>
void func(T arg) {/* something */}

why can't we do

template <T>
void func(T arg) {/* something */}

From cplusplus.com :

The only difference between both prototypes is the use of either the keyword class or the keyword typename. Its use is indistinct, since both expressions have exactly the same meaning and behave exactly the same way.

开发者_C百科It just seems like unnecessary boilerplate to me.


http://www.cplusplus.com/doc/tutorial/templates/ See the section on Non-type parameters for templates.

You need some keyword to distinguish type-parameters from non-type parameters.

template <class T, int N>
class mysequence {
    T memblock [N];
  public:
    void setmember (int x, T value);
    T getmember (int x);
};


Because template arguments are not always types. You can have a template argument that is an integral value, for example, as in the case of std::bitset<size_t N>.

0

精彩评论

暂无评论...
验证码 换一张
取 消