Оригинальный вопрос
Как я могу передать функцию с или без параметра в качестве шаблона?
Причина в том, что я обновил мою Queue
структуру данных , как мне сказали в моем другом вопросе о том, как определить, является ли параметр функции функцией .
Теперь единственная проблема заключается в том, что он принимает только функции без параметров. Есть ли способ улучшить его, чтобы он принимал несколько параметров?
Вот мой код:
// Necessary includes:
#include <vector>
#include <any>
// If the data is a function:
void call_if_function(void (*function)()) {
function();
}
// If the data is not a function:
void call_if_function(std::any variable) {
(void)variable;
}
template <class T>
class Queue {
// Public members:
public:
// Enqueue data:
void Enqueue(const T& data) {
vec_.push_back(data);
}
// Dequeue data:
void Dequeue() {
T holder = vec_.front();
vec_.erase(vec_.begin());
call_if_function(holder);
}
// Private members:
private:
std::vector<T> vec_;
}
Отредактированный вопрос
Во время непрерывных тестов я в конце концов попытался использовать шаблоны. Но я не уверен, как проверить, существует ли шаблонная переменная.