#include <type_traits>
template<int N>
struct vec1 { double v[N]; }; // コンストラクター無し版。
template<int N>
struct vec2 // コンストラクター使用版。
{
double v[N];
template<typename... T>
constexpr vec2(T... d) : v{ static_cast<double>(d)... }
{
}
};
int main()
{
vec1<3> v1{ 1.1f, 2, false };
vec2<3> v2{ 1.1f, 2, false };
}
I2luY2x1ZGUgPHR5cGVfdHJhaXRzPgoKdGVtcGxhdGU8aW50IE4+CnN0cnVjdCB2ZWMxIHsgZG91YmxlIHZbTl07IH07IC8vIOOCs+ODs+OCueODiOODqeOCr+OCv+ODvOeEoeOBl+eJiOOAggoKCnRlbXBsYXRlPGludCBOPgpzdHJ1Y3QgdmVjMiAvLyDjgrPjg7Pjgrnjg4jjg6njgq/jgr/jg7zkvb/nlKjniYjjgIIKewoJZG91YmxlIHZbTl07CgoJdGVtcGxhdGU8dHlwZW5hbWUuLi4gVD4KCWNvbnN0ZXhwciB2ZWMyKFQuLi4gZCkgOiB2eyBzdGF0aWNfY2FzdDxkb3VibGU+KGQpLi4uIH0KCXsKCX0KfTsKCmludCBtYWluKCkKewoJdmVjMTwzPiB2MXsgMS4xZiwgMiwgZmFsc2UgfTsKCXZlYzI8Mz4gdjJ7IDEuMWYsIDIsIGZhbHNlIH07Cn0K