Pra*_*een 3 c++ recursion templates c++11
我试图了解递归可变参数模板的工作原理.
#include <iostream>
template<typename T>
static inline void WriteLog(T&& msg) {
std::wcout << std::forward<T>(msg);
}
template<typename T, typename... Ts>
static void WriteLog(T&& msg, Ts&&... Vals) {
WriteLog(std::forward<T>(msg));
WriteLog(std::forward<Ts>(Vals)...);
std::wcout << "\n**End**";
}
int main() {
WriteLog("apple, ", "orange, ", "mango");
}
Run Code Online (Sandbox Code Playgroud)
输出:
apple, orange, mango
**End**
**End**
Run Code Online (Sandbox Code Playgroud)
我只期待一个**End**.为什么要打印两次?
Oth*_*oun 10
调用树:
WriteLog("apple, ", "orange, ", "mango");
->WriteLog("apple, ");
-> std::wcout << "apple, ";
->WriteLog( "orange, ", "mango");
->WriteLog("orange, ");
-> std::wcout << "orange, ";
->WriteLog( "mango");
-> std::wcout << "mango";
->std::wcout << "\n**End**";
->std::wcout << "\n**End**";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
807 次 |
| 最近记录: |