#include <array>
#include <iostream>
#include <string>

namespace detail
{
	template<typename T>
	std::string
	to_string(T&& arg)
	{
		return std::string(std::forward<T>(arg));
	}
}

template<typename... Args>
std::array<std::string, sizeof...(Args)>
ToStringArray(Args... args)
{
	using detail::to_string;
	using std::to_string;
	std::array<std::string, sizeof...(Args)> unpack = {to_string(args)...};
	return unpack;
}

int main()
{
	auto Print = [](const auto &array)
		{
			std::cout << "Print array with size " << array.size() << std::endl;
			for (auto &arg : array)
			{
				if (arg.empty())
				{
					std::cout << "empty string" << std::endl;
					continue;
				}
				std::cout << arg << std::endl;
			}
		};
		
	Print(ToStringArray(1u, "2", 0.3));;
	Print(ToStringArray(std::string("")));
	Print(ToStringArray());

	return 0;
}