Сгенерировать уникальный экземпляр шаблона для использования шаблона

#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 в анонимное пространство имен, если вы действительно хотите, чтобы каждый экземпляр был отдельным классом (если это будет в файле заголовка).