初めて知った。可変長テンプレート引数を使ったからと言って必ずしも再帰せずにすむ。
template<typename... Args> void myprint(const Args... args) { //型が違うと暗黙キャストがきなくてエラーになったりするのでstatic_castする auto ini_list = { static_cast<double>(args)... };// init_listの型はinitializer_list<double> for (const auto d : ini_list) { std::cout << d << std::endl; } }
int main() { myprint(3.5, 3, 5.f); }
上記の用途なら以下のように書くとシンプルになる。
#include <string> template<typename... Args> void myprint(const Args... args) { for (const auto& s: { std::to_string(args)... }) { std::cout << s << std::endl; } }