Возможно, кто-то поможет объяснить, почему я получаю сообщение об ошибке при компиляции следующего кода с помощью Xcode 5.1 в OS X. Apple LLVM version 5.1 (clang-503.0.40) (на основе на LLVM 3.4svn).Ошибка компилятора при конструировании вектора std :: function
#include <vector>
#include <functional>
void func1(const std::string& value)
{
// ...
}
void func2(const std::string& value, int min, int max)
{
// ...
}
class X
{
public:
void x1(const std::string& value)
{
// ...
}
void x2(const std::string& value, int min, int max)
{
// ...
}
};
const std::vector<std::function<void(std::string)>> functions
{
func1,
std::bind(func2, std::placeholders::_1, 5, 6),
std::mem_fn(&X::x1), // compiler error
};
сообщила об ошибке:
no matching constructor for initialization of 'const std::vector<std::function<void (std::string)> >'
const std::vector<std::function<void(std::string)>> functions
Кроме того, я хотел бы добавить X :: x2 вектору. Как мне это сделать?
Спасибо.
функции-члены нужен объект для работы на их подписи не совместим с 'void (std :: string)' в вашем случае. Возможно, вы сможете использовать bind, чтобы он работал, но вам понадобится экземпляр. – Mat
@Mat Пожалуйста, добавьте это как ответ. – balajeerc
@Mat Пожалуйста, вы можете уточнить. – ksl