살군의 보조기억 장치

Another memory device…

Function Template

leave a comment »

기본적인 cpp 기능임에도 불구하고 여기에 다시 적는 것은, 너무 오래간만이라 까먹어서 다시 기록해 두는 것이다. 예제를 보는 것이 가장 확실한 사용법을 익히는 방법. 사용 예를 보면,

template<typename T>
void f(T s)
{
    std::cout << s << '\n';
}
 
void f<double>(double); // instantiates f<double>(double)
void f<>(char);         // instantiates f<char>(char)
void f(int);            // instantiates f<int>(int)

line:1~2 처럼 함수 선언 앞에 template 키워드를 넣어서 선언을 한다. 여기서 뒤에 나오는 typename 대신 class를 사용하는 것을 자주 볼 수 있다. 무슨 차이가 있을까? 당연히 세상은 혼자가 아니다. 궁금한 사람이 있고 답해주는 사람들도 많다.

Summary: Stroustrup originally used class to specify types in templates to avoid introducing a new keyword. Some in the committee worried that this overloading of the keyword led to confusion. Later, the committee introduced a new keyword typename to resolve syntactic ambiguity, and decided to let it also be used to specify template types to reduce confusion, but for backward compatibility, class kept its overloaded meaning.

According to Scott Myers, Effective C++ (3rd ed.) item 42 (which must, of course, be the ultimate answer) – the difference is “nothing”.

즉, 둘다 똑같으니 어느거나 써도 상관없다…랜다.

참고
Advertisements

Written by gomiski

2014/03/03 at 3:51 am

Posted in C++, General, Lecture

Tagged with , , , , ,

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: