Код: Выделить всё
#include
template struct K;
template struct K {};
< /code>
Потому что аргумент шаблона std :: array {a ...} < /code> не должен включать параметры шаблона. Как я понял, невозможно предоставить параметры без типа в специализации частичной шаблоны, если они нетривиально зависят от параметров шаблона. Следовательно, я попытался обойти эту проблему, содержав значение в типе: < /p>
#include
template struct any_type;
template struct FromArr;
template
struct FromArr {};
int main() {
FromArr d;
(void) d;
}
< /code>
Однако здесь, специализация с частичным шаблоном не удается, когда я пытаюсь его использовать; Приведенное выше определение не соответствует тому, как я его использую, и я не уверен, почему. Он не удается со следующей ошибкой: < /p>
file.cc: In function ‘int main()’:
file.cc:10:55: error: aggregate ‘FromArr d’ has incomplete type and cannot be defined
10 | FromArr d;
< /code>
Можно ли обойти этот /использовать другой подход, чтобы интерфейс массив как пакет параметров? -std = c ++ 2a file.cc < /code>, C ++ 2a требуется, потому что я использую параметры шаблона без типа. - пакет параметров (1). Было бы неплохо, если бы я смог использовать массив (2) (который я получил в другом фрагменте моего кода в качестве аргумента шаблона без типа) для взаимодействия с этой структурой, как указано в коде ниже. < /p>
template struct toBeUsed; // (1)
template struct Consumer { // (2)
toBeUsed instance; // This is what I would like to do
}
ссылка на пример < /h3>
Здесь я связываю пример упрощенного использования (2 -й кодовой блок). < /p>
Подробнее здесь: https://stackoverflow.com/questions/604 ... meter-pack
Мобильная версия