#pragma once template std::vector create_vector(T value, size_t size) { return std::vector(size, value); } template (std::declval(), std::declval()...)) >> V create_vector(T value, size_t size, Args... sizes) { return V(size, create_vector(value, sizes...)); } template (std::declval(), std::declval()...)) > V initialize_vector(T value, Args... sizes) { return create_vector(value, sizes...); }