template 에서


// tempover.cpp --- 템플릿 오버로딩

#include <iostream>


template <class T>            // 템플릿 A

void ShowArray(T arr[], int n);


template <class T>            // 템플릿 B

void ShowArray(T * arr[], int n);


struct debts

{

    char name[50];

    double amount;

};

template<class T>

void Sumarray(T arr[],int n)

{

    using namespace std;

    T max;

    for(int i=0;i<n;i++)

        max+=arr[i];

    cout<<max<<endl;

}

template <class T> //왜 여기가 실행부분이 안되는거지?

void Sumarry(T * arr[],int n)

{

    using namespace std;

    T max;

    for(int i=0;i<n;i++)

        max+=*arr[i];

    cout<<max<<endl;

    

}


int main(void)

{

    using namespace std;

    int things[6] = {13, 31, 103, 301, 310, 130};

    struct debts mr_E[3] =

    {

        {"Ima Wolfe", 2400.0},

        {"Ura Foxe", 1300.0},

        {"Iby Stout", 1800.0}

    };

    double * pd[3];

    

    // 포인터들을 배열 mr_E 있는 구조체들의 amount 멤버로 설정한다

    for (int i = 0; i < 3; i++)

        pd[i] = &mr_E[i].amount;

    

    cout << "Mr. E 재산 목록:\n";

    // things int형의 배열이다

    ShowArray(things, 6);  // 템플릿 A 사용한다

    cout << "Mr. E 채무 목록:\n";

    // pd double형을 지시하는 포인터들의 배열이다

    ShowArray(pd, 3);      // 특수화된 템플릿 B 사용한다

    Sumarray(things, 6);

    Sumarray(pd,3);

        return 0;

}


template <typename T>

void ShowArray(T arr[], int n)

{

    using namespace std;

    cout << "템플릿 A\n";

    for (int i = 0; i < n; i++)

        cout << arr[i] << ' ';

    cout << endl;

}


template <typename T>

void ShowArray(T * arr[], int n)

{

    using namespace std;

    cout << "템플릿 B\n";

    for (int i = 0; i < n; i++)

        cout << *arr[i] << ' ';

    cout << endl;

}


위에 코드 보면 분명 보는 템플릿 함수들은 정상적으로 오버로딩 되는데 덧셈하는 템플릿함수들에 대해서는 왜 정상적으로 오버로딩이 안되는거임?