C++的可變參數(shù)模板允許你創(chuàng)建接受任意數(shù)量參數(shù)的函數(shù)或類。為了實現(xiàn)可變參數(shù)模板,你需要使用兩個C++11特性:參數(shù)包(parameter pack)和展開表達式(variadic expansion)。下面是一個簡單的示例,展示了如何使用可變參數(shù)模板實現(xiàn)一個函數(shù),該函數(shù)可以計算其參數(shù)的和。
#include <iostream>
// 定義一個可變參數(shù)模板函數(shù),用于計算參數(shù)的和
template <typename... Args>
auto sum(Args... args) -> decltype(args...) {
return (... + args);
}
int main() {
// 使用可變參數(shù)模板函數(shù)計算參數(shù)的和
std::cout << "Sum of 1, 2, and 3: " << sum(1, 2, 3) << std::endl;
std::cout << "Sum of 4, 5, 6, and 7: " << sum(4, 5, 6, 7) << std::endl;
return 0;
}
在這個示例中,我們定義了一個名為sum
的函數(shù)模板,它接受任意數(shù)量的參數(shù)。我們使用typename... Args
表示參數(shù)包,其中Args
是一個可變參數(shù)類型列表。decltype(args...)
表示返回類型,它根據(jù)傳遞給函數(shù)的實際參數(shù)類型推斷出來。
在函數(shù)體中,我們使用展開表達式(... + args)
將參數(shù)包中的所有參數(shù)相加。這個表達式會將參數(shù)包中的每個參數(shù)依次添加到前面的參數(shù)上,直到最后一個參數(shù)。
在main
函數(shù)中,我們調(diào)用sum
函數(shù)并傳遞不同數(shù)量的參數(shù),以演示可變參數(shù)模板的用法。