Why is a constexpr function on a reference not constexpr?
问题 Consider the following function: template <size_t S1, size_t S2> auto concatenate(std::array<uint8_t, S1> &data1, std::array<uint8_t, S2> &data2) { std::array<uint8_t, data1.size() + data2.size()> result; auto iter = std::copy(data1.begin(), data1.end(), result.begin()); std::copy(data2.begin(), data2.end(), iter); return result; } int main() { std::array<uint8_t, 1> data1{ 0x00 }; std::array<uint8_t, 1> data2{ 0xFF }; auto result = concatenate(data1, data2); return 0; } When compiled using