Quellcode durchsuchen

feat: 添加一点可变参数模板

usuifohe vor 2 Jahren
Ursprung
Commit
ec8b51747b
1 geänderte Dateien mit 36 neuen und 1 gelöschten Zeilen
  1. 36 1
      cpp/C++11&14.md

+ 36 - 1
cpp/C++11&14.md

@@ -496,4 +496,39 @@ l();// 输出 hello world
 auto f = [=, &id]{ 
     // ...
 };
-```
+```
+
+## Vaiadic Templates
+
+允许定义可变数量的模板参数。在传统的模板中,参数数量是固定的,而 Variadic Templates 允许我们在模板中接受任意数量的参数
+
+```cpp
+void func() { /* ... */}
+
+template<typenaem T, typename... Types>
+void func(const T& firstArg, const Types... args) {
+    // do something
+    func(args);
+}
+```
+
+```cpp
+template<typename T>
+T sum(T t) {
+    return t;
+}
+
+template<typename T, typename... Args>
+T sum(T t, Args... args) {
+    return t + sum(args...);
+}
+
+int main() {
+    int result = sum(1, 2, 3, 4, 5);
+    // result = 1 + 2 + 3 + 4 + 5 = 15
+    return 0;
+}
+```
+
+利用参数个数的逐一递减的特性实现递归函数调用
+