В C ++ 11 вы можете использовать std::bind
; это просто не так очевидно, как его использовать:
#include <functional>
using namespace std::placeholders;
std::find_if(
foo.begin(),
foo.end(),
// create a unary function object that invokes greater<int>::operator()
// with the single parameter passed as the first argument and `bar`
// passed as the second argument
std::bind(std::greater<int>(), _1, bar)
) - foo().begin() - 1;
Ключом является использование аргумента-заполнителя, объявленного в пространстве имен std::placeholders
. std::bind
возвращает объект функции, который принимает некоторое количество параметров при его вызове. Заполнители, используемые внутри вызова std::bind
, показывают, как аргументы, предоставляемые при вызове результирующего объекта, сопоставляются с списком аргументов вызываемому, к которому вы привязываетесь. Так, например:
auto op1 = std::bind(std::greater<int>(), _1, bar);
op1(5); // equivalent to std::greater<int>()(5, bar)
auto op2 = std::bind(std::greater<int>(), bar, _1);
op2(5); // equivalent to std::greater<int>()(bar, 5)
auto op3 = std::bind(std::greater<int>(), _2, _1);
op3(5, bar); // equivalent to std::greater<int>()(bar, 5)
auto op4 = std::bind(std::greater<int>(), _1, _2);
op4(5, bar); // equivalent to std::greater<int>()(5, bar)
Проблема не в том, что полноэкранный режим установлен неправильно, но файл config.xml
не читается / не отправляется. См. здесь.