find {directory} -type f -name '*.extension'
пример для поиска всех CSV-файлов в текущем каталоге и его подкаталогах
find . -type f -name '*.csv'
Вы можете просто использовать boost :: function
. Я думаю, что boost :: bind
действительно имеет свой собственный тип возвращаемого значения, но он совместим с boost :: function
. Типичное использование - создание typedef для функции:
typedef boost::function<bool(std::string)> MyTestFunction;
, а затем вы можете передать любую совместимую функцию с помощью boost :: bind
:
bool SomeFunction(int i, std::string s) { return true; }
MyTestFunction f = boost::bind(SomeFunction, 42, _1);
f("and then call it.");
Я надеюсь, что это то, что вы хотите.
Это также работает с методами, передавая указатель this
для вызова в качестве второго параметра в boost :: bind
.
Я бы определил минимизацию () следующим образом:
minimize(boost::function< return_type(param_type1,param_type2,param_type3,...)> f)
{
...
}
Затем вы могли бы вызвать Minim () следующим образом:
minimize(boost::bind(&class::function,actual_object,_1,_2,_3,...));
Измените параметр к параметру значения. Функциональные объекты намеренно легкие, и boost :: bind
, безусловно, специально созданы, чтобы уместиться в пространстве в несколько байтов с использованием boost :: compressed_pair
и т. Д.
template <class T>
void minimize(T f) {
}
Затем вы можете передать ему результат boost :: bind
. Помните, что boost :: bind
на самом деле является шаблоном функции, который возвращает некоторый объект определенного типа. Таким образом, имея минимизировать
неконстантный ссылочный параметр, работать не может.
Во-первых, вы принимаете аргумент шаблона как ref-to-non-const, поэтому временное преобразование с помощью boost :: bind не будет привязано к нему. Таким образом, вы можете использовать его так:
template <class T>
T::result_type minimize(const T &f) {
}
Но если вы хотите использовать это и со своими функторами, они должны иметь константный оператор (). Так что, возможно, лучше по значению:
template <class T>
T::result_type minimize(T f) {
}
Я считаю, что возвращение T :: result_type заставит T быть функцией boost :: (а не возвратом сложного типа bind), но я не на 100%