Здравствуйте, Lomion, Вы писали:
L>Как такое победить?
Причина, как уже сказали, в том, что у множества сигнатур — множество типов.
Поскольку bind не навязывает тип аргумента, а принимает всё что угодно, и возникла неоднозначность.
Конкретизировать тип можно двумя способами. Первый — указать сигнатуру.
Второй — позволить компилятору выбирать сигнатуры самостоятельно... Внимание, фокус!
L>Собстна, все работает, все понятно... L>но, если расскомментировать в структуре метод foo с аргументом int, то все ломается — код не компилируется... L>Как такое победить?
Здравствуйте, rg45, Вы писали:
R>ИМХО, неявное приведение сработает, если в точке использования однозначно определен целевой тип. А иначе приходится "подсказывать" при помощи явного приведения. Либо я твою мысль не уловил?
Я имел ввиду boost::implicit_cast. По-моему везде, где достаточен boost::implicit_cast нужно использовать его. Тем более, если Boost так и так используется.
Собстна, все работает, все понятно...
но, если расскомментировать в структуре метод foo с аргументом int, то все ломается — код не компилируется...
Как такое победить?
ИМХО, неявное приведение сработает, если в точке использования однозначно определен целевой тип. А иначе приходится "подсказывать" при помощи явного приведения. Либо я твою мысль не уловил?
Ммм... да, спасибо, я вроде бы понял... но, это был несколько искусственный пример...
в реальности, я так хотел использовать std::string::find... но что-то я, наверное, не до конца понял