[英]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.