LINUX.ORG.RU

История изменений

Исправление SZT, (текущая версия) :

Если calc_temp_array_size() — это constexpr-функция, то мы получаем возможность размещать tmp_array на стеке или в статической памяти. В отсутствие constexpr вы что предлагаете делать?

Предлагаю сделать код, который

printf("%" PRIu64 "\n", calc_temp_array_size(12, 15, 100500) );
Потом
./a.out > arrsz.h
float tmp_array[ 
                 #include "arrsz.h"
               ];
При желании это все можно автоматизировать каким-нибудь препроцессором, чтобы можно было делать
float tmp_array[ 
                 /*## EXEC(printf("%" PRIu64 "\n", calc_temp_array_size(12, 15, 100500) ); */
               ];

Откуда дровишки? Участвовали в разработке GCC, Clang, Intel C++ или Microsoft С++?

А вы прикиньте, что надо сделать в том же GCC чтобы обеспечить возможность обрабатывать эти constexpr-ы в компилтайме, учитывая еще тот факт, что это может быть кросскомпилятор, который скажем на интеле работает, а код генетирует под какой-нибудь AVR 16-битный. А сделать надо ИНТЕРПРЕТАТОР этого C++

Исходная версия SZT, :

Если calc_temp_array_size() — это constexpr-функция, то мы получаем возможность размещать tmp_array на стеке или в статической памяти. В отсутствие constexpr вы что предлагаете делать?

Предлагаю сделать код, который

printf("%" PRIu64 "\n", calc_temp_array_size(12, 15, 100500) );
Потом
./a.out > arrsz.h
float tmp_array[ 
                 #include "arrsz.h"
               ];
При желании это все можно автоматизировать каким-нибудь препроцессором, чтобы можно было делать
float tmp_array[ 
                 /*## EXEC(calc_temp_array_size(12, 15, 100500)); */
               ];

Откуда дровишки? Участвовали в разработке GCC, Clang, Intel C++ или Microsoft С++?

А вы прикиньте, что надо сделать в том же GCC чтобы обеспечить возможность обрабатывать эти constexpr-ы в компилтайме, учитывая еще тот факт, что это может быть кросскомпилятор, который скажем на интеле работает, а код генетирует под какой-нибудь AVR 16-битный. А сделать надо ИНТЕРПРЕТАТОР этого C++