fork download
  1. #include <cstdint>
  2. #include <cstdlib>
  3. #include <iostream>
  4.  
  5.  
  6. template<typename T, size_t N>
  7. T (&makeArray())[N] {
  8. void* rv = malloc(sizeof(T) * N);
  9. return *reinterpret_cast<T(*)[N]>(rv);
  10. }
  11.  
  12. template<size_t NNew, typename T, size_t NOld>
  13. T (&changeArraySize(T (&arr)[NOld]))[NNew] {
  14. void* rv = realloc(arr, sizeof(T) * NNew);
  15. return *reinterpret_cast<T(*)[NNew]>(rv);
  16. }
  17.  
  18.  
  19. int main() {
  20. uint8_t (&arr)[100] = makeArray<uint8_t, 100>();
  21. std::cout << sizeof(arr) << std::endl;
  22.  
  23. uint8_t (&newArr)[150] = changeArraySize<150>(arr);
  24. std::cout << sizeof(newArr) << std::endl;
  25. }
Success #stdin #stdout 0s 4296KB
stdin
Standard input is empty
stdout
100
150