[c++] 구조체와 클래스의 템플릿 인자 연산

C++ 템플릿은 강력한 기능으로, 틀을 정의한 후 여러 가지 형식에 대해 동일한 코드를 사용할 수 있습니다. 템플릿은 클래스와 구조체에서 모두 사용될 수 있는데, 이러한 템플릿을 인자로 하는 구조체나 클래스를 정의하는 것도 가능합니다.

template <typename T>
struct MyStruct {
    T value;
    T add(T x) {
        return value + x;
    }
};

template <typename T, int N>
class MyClass {
public:
    T array[N];
    T getValue(int index) {
        return array[index];
    }
};

위의 코드에서 MyStructMyClass는 각각 하나의 템플릿 인자를 가지고 있습니다. MyStruct는 단일 형식을 사용하고, MyClass는 형식과 크기 둘 다에 대한 템플릿 인자를 사용합니다. 이제 이러한 템플릿을 인자로 가지는 구조체나 클래스들을 사용하여 연산을 수행해 보겠습니다.

MyStruct<int> s1;
s1.value = 5;
std::cout << s1.add(3) << std::endl; // 출력: 8

MyClass<double, 5> c1;
c1.array[0] = 3.14;
std::cout << c1.getValue(0) << std::endl; // 출력: 3.14

위의 예제를 통해 템플릿을 인자로 가지는 구조체와 클래스를 정의하고, 해당 인스턴스를 사용하여 연산을 수행하는 방법을 살펴보았습니다. 템플릿은 유연한 코드 작성을 가능하게 하며, 다양한 형식과 크기에 대한 지원을 제공합니다.

다양한 템플릿 인자 연산에 대한 더 많은 정보는 cplusplus.com 같은 사이트에서 찾아볼 수 있습니다.