C++ の世界で、私がやろうとしていることを可能にするものはありますか?
template < typename T
, size_t Size >
struct array
{
constexpr T buf[Size];
constexpr size_t size() const { return Size; }
};
template < typename T
, size_t Size >
constexpr array<T,Size+1> push_back(array<T,Size> const& arr, T const& val)
{
array<T,Size+1> arr_out = {{arr.buf, val}};
return arr_out;
}
私がやろうとしているのは、他のデータで初期化された新しい配列を作成し、最後に新しい要素を配置することです。
constexpr を差し引いて、push_back 関数で初期化をループすることで動作させることができます。constexpr 関数ではそれを行うことができないようですが、これはある程度理にかなっていますが、十分に賢いコンパイラがそれを理解できると思います。
私はそれができないと確信していますが、間違っていることを示したいと思っています。