簡體   English   中英

在 C++ 中為 function 模板化一個參數

[英]Templatizing a parameter for a function in C++

我是編程初學者,在學習 C++ 的算法時閱讀了示例代碼。

template <size_t N>
void print(const std::array<int, N>& arr)
{
    for(auto element: arr)
    {
        std::cout << element << ' ';
    }
}

現在我很好奇像上面這樣的模板化和像下面這樣傳遞參數有什么區別。

void print(const std::array<int, size_t>& arr)

他們的工作一樣嗎? 如果是,像第一個示例那樣編寫代碼是否有優勢? 如果不一樣,可以解釋一下,它們之間的區別是什么?

我想他們之間可能沒有區別..?

他們的工作一樣嗎?

不,帶有std::array<int, size_t>的第二個片段甚至不會編譯,因為std::array的第二個模板參數std::size_t類型的非類型模板參數,因此它需要一個參數類型size_t (或可轉換為它)。

因此, size_t不是第二個非類型參數的有效模板參數,因此第二個代碼段無法編譯。

//--------------vvvvvv------>invalid argument for a non-type parameter 
std::array<int, size_t>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM