글 작성자: Sowhat_93

보통 버퍼를 Argument로 전달하면 char* 형태로 전달한 다음 인자가 하나 더 들어간다.

size_t 타입으로 cbSize같은 형태로 배열의 크기를 전달하곤 하는데,

 

템플릿을 사용할때에 피곤한 일이 발생한다.

여러개의 오버로딩된 함수를 템플릿 함수 내 에서 호출한다고 하면,

인자의 개수가 같은 쪽이 훨씬 더 구현하기 깔끔하기 때문이다.

  

이렇게 배열의 크기가 인자의 개수를 통일하지 못하게 막고 있다면,

C++11 부터 추가된 Type Inference를 이용하면 간단하게 해결할 수 있다.

아래의 예시를 보도록 하자.

간단하다.

template<class T, size_t Size>
void ArraySize(T (&buffer)[Size])
{
    std::cout << "Array's Count Of Bytes : " << sizeof(T) * Size << std::endl;
}


int main()
{

    int intArray[40];
    char charArray[40];

    //160
    ArraySize(intArray);

    //40
    ArraySize(charArray);

    return 0;
}