[英]C++ template | error: parameter packs not expanded with '…':
我收到以下錯誤:
error: parameter packs not expanded with '...':
auto const m = msg...;
代碼:
#include <cstdio>
#include <iostream>
#include <cstdarg>
#include <string>
using namespace std;
template<typename... T>
void print(T& ... msg)
{
auto const m = msg...;
cout << m;
}
int main()
{
print("a", "o");
}
這個語法:
auto const m = msg...;
無效。 嘗試這個:
template <typename... T> void print(T &...msg) {
using var = int[];
(void)var{0, (std::cout << msg << std::endl, 0)...};
}
感謝這個參考能夠回答這個問題。
如果你想保存在一個變量中,然后打印,只有msg...
包,也許
template <typename... T>
void print (T& ... msg)
{
auto const m = std::get<sizeof...(msg)-1u>(std::tie(msg...));
std::cout << m;
}
如果要打印所有msg...
值,從 C++17 開始,您可以使用模板折疊
template <typename... T>
void print (T& ... msg)
{ ((std::cout << msg), ...); }
在 C++17 之前,您可以使用未使用變量的初始化列表來模擬這一點(請參閱 Rohan Bari 的答案以獲得一個很好的示例)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.