Изображение имеет следующую структуру:
typedef struct {
int a;
int b[2];
int c;
} DataParameters;
В конкретной ситуации c вы знаете все эти значения во время компиляции:
constexpr DataParameters p = {
.a = 5,
.b = {3, 3},
.c = 12
};
Затем вы хотите создать шаблонную функцию, которая использует значения a, b, c. Следующий синтаксис действителен, так как структура объявлена как constexpr
.
template<int A, int B_0, int B_1, int C>
void doSomething() {
...
}
doSomething<p.a, p.b[0], p.b[1], p.c>();
Но давайте представим, что у вас есть структура, которая намного больше, и вам не нужен огромный список параметров шаблона. Есть ли лучший способ сделать это? Я пробовал следующее, но получаю ошибки компилятора:
template<const DataParameters& P>
void doSomething() {
...
}
doSomething<p>();
Есть предложения?