#c
#c
Вопрос:
Кто-нибудь знает, возможно ли создать уникальный экземпляр шаблона (я думаю, это слово) для каждого использования, даже если типы совпадают?
Я думал использовать какой-то тип счетчика времени компиляции? Нравится
constexpr int next_count() { // что мне здесь делать? } шаблон struct foo { ... }; шаблон auto make_foo(T val) { вернуть foo(значение); }
Любая помощь по этому вопросу была бы оценена. Если это не имеет смысла, это тоже можно сказать.
Комментарии:
1. Чего вы пытаетесь достичь? Ваш вопрос не очень ясен
2. Что бы вы ни планировали с этим сделать, почти наверняка есть лучшее решение вашей реальной проблемы…
Ответ №1:
Вы могли бы передать make_foo
функции дополнительный параметр шаблона и добавить дополнительный параметр шаблона к исходному foo
классу (они будут int
s) и выбирать другое значение для каждого раза, когда вызывается функция. Если вы хотите, чтобы он автоматически увеличивался, лучшее, что я могу придумать, это использовать __LINE__
. Тогда вы сможете #define MAKE_FOO(targs, val) make_foo<targs, __LINE__>(val)
. Добавьте больше targs
по мере необходимости. Не забудьте обернуть foo
в анонимное пространство имен, если вы действительно хотите, чтобы каждый экземпляр был отдельным классом (если это будет в файле заголовка).