Так я работал на классе функций, и по умолчанию, я могу это сделать, и это работает:Ограничение количества аргументов в функции VARIADIC
int main(){
function f("x^2+1");
cout<<f(3)<<endl;
return 0;
}
«Предположим, собственно включает в себя и пространство имен»
В любом случае, я хотел бы иметь возможность передавать несколько переменных и даже указывать, каковы эти переменные;
function f("x^2+y^2",x,y); // it doesn't really matter if it's x, 'x', or "x"
cout<<f(3,4)<<endl; // input 3 as x, and 4 as y
Я довольно уверен, что я мог бы что-нибудь придумать для конструктора с использованием VARIADIC функций, и даже решить правильно, но будет ли способ заставить оператора() аргументы взять ровно 2 значения?
Я просто смотрел на вариационные функции, потому что они действительно первые вещи, которые я видел в C++, которые могут принимать несколько аргументов, поэтому, если лучше сделать это каким-то другим способом, я все для этого.
Моя рекомендация - начать с более простого варианта использования вариативных шаблонов, чтобы узнать, как они обычно используются. Чтобы решить эту конкретную проблему, вам нужно будет выработать частичное применение аргументов к представлению функции (поскольку вариативные шаблоны являются рекурсивными), что не очень тривиально. – OmnipotentEntity
Я бы предостерег от использования обычных вариабельных функций C для этого, потому что они не являются строго безопасными. (См. Уязвимости printf.) – OmnipotentEntity