'Make the compiler deduce the parameter of a function before compilation

Here is an example of my problem.

#include <stdio.h>

//template<std::size_t A> <-- Tried to solve the problem by using template
void func1(const int power){
    const int length = 1 << power;
    int twoDArrayA[length][length];

    for (int j = 0; j < power; j++)
    {
        /* Code */
    }
}

int main() {
    func1(4);
    func1(3);
    func1(2);
}

I wonder if I could somehow allow the compiler to deduce parameter power in func1 before it compiles. So instead of compiles one function, it compiles 4 functions in the format of func1 with different power value.

The reason for this is because I would like to use Vitis HLS to unroll the loop and partition the matrix so that it could be implemented onto a FPGA, where a variable-length loop or array cannot work properly.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source