1

可変個引数関数テンプレートに渡されたすべてのパラメーターを出力しようとしています。私はこの再帰的アプローチを試しました:

#include <iostream>

template<typename TFirst, typename... Arguments>
void Output(TFirst first, Arguments... parameters)
{
  std::cout << first << std::endl;
  Output(parameters);
}

template<typename TFirst>
void Output(TFirst first)
{
  std::cout << first << std::endl;
}

void Output()
{
  // do nothing
}

int main()
{
  Output(1.0f, 2);
}

しかし、私は得parameter packs not expanded with '...'ます。誰かがここで何が悪いのか説明できますか?

- - - - - 編集 - - - - - -

解決策は次のとおりです。

#include <iostream>

template<typename T>
inline void showArguments(T&& arg) { std::cout << arg << std::endl; }

template<typename First, typename... Rest>
inline void showArguments(First&& first, Rest&& ...rest)
{
  showArguments(first);
  showArguments(rest...);
}

int main()
{
    showArguments("Hello", "World", 1, 2.3, false, true);
}
4

1 に答える 1

1

する必要があります

template<typename TFirst, typename... Arguments>
void Output(TFirst first, Arguments... parameters)
{
  std::cout << first << std::endl;
  Output(parameters...);
}

(パラメーターの後の末尾...に注意してください)

于 2012-11-26T17:12:56.480 に答える