ベクトル演算用のコンテナー クラスを作成しようとしています。オブジェクトのサイズは静的です。
template<typename T, unsigned N>
class vec{
T data[N] = {0};
public:
vec(std::initializer_list<T> ini){
std::copy(ini.begin(), ini.end(), data);
}
}
これが私が得た距離です。
しかし、比較のために std::array クラスをテストしたところ、初期化子リストが長すぎたり短すぎたりすると、どういうわけか静的アサーションを作成できることに気付きました。
std::array<float, 2> a = {1, 2, 3, 4} <- instant error message from the visual studio ide
私のクラスでは、実行時にイニシャライザ リストの長さをチェックする必要があります。
std::array クラスは、 std::initializer_list クラスを使用せずに、初期化子リスト表記でデータを直接初期化するように何らかの方法で管理していると思います。
std::array と同じ方法でクラスを初期化することは可能ですか?