Обработка пустого типа в шаблонеC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Обработка пустого типа в шаблоне

Сообщение Anonymous »

У меня есть шаблонная функция, которая вызывает другую функцию и сохраняет его возвращаемое значение, а затем выполняет некоторую работу, прежде чем вернуть значение. Я хотел бы расширить это, чтобы обрабатывать t = void < /code>, и мне было интересно, является ли специализация моей единственной опцией. < /P>

Код: Выделить всё

template
T Foo( T(*Func)() )
{
// do something first (e.g. some setup)
T result = Func();
// do something after (e.g. some tear down)
return result;
}

// Is this specialization the only option?
template
void Foo( void(*Func)() )
{
// do something first (e.g. some setup)
Func();
// do something after (e.g. some tear down)
return;
}

void Bar() {}
int BarInt() { return 1; }

int main()
{
Foo(&BarInt);
Foo(&Bar);
}
Или регулярная версия Foo быть изменена для обработки типа void и в основном ничего не делать в этом случае? Я думал, что, возможно, мой локальный результат может быть завершен в тип, который мог бы обрабатывать void , может быть, но также может рассматривать задание как нарушитель сделки.

Подробнее здесь: https://stackoverflow.com/questions/142 ... n-template
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»