Испытывал эту проблему при привязке к функции-члену:
std::function<void(Appender<Contact>&)> f = std::bind(&Manager::AppendContacts, this, std::placeholders::_1);
И затем где-то передавал:
gBuf.append(f);
Ошибка была:
LNK1179: invalid or corrupt file: duplicate COMDAT (...)
Кажется, что функция-член имеет ту же самую сигнатуру, что и f
(или, возможно, превышает максимальный предел, который проверяет компоновщик)
Если я вместо этого напишу ее в строке, без промежуточного f
,без ошибок.
gBuf.append(std::bind(&Manager::AppendContacts, this, std::placeholders::_1));
Я не претендую на то, чтобы понять, что здесь происходит, но, возможно, я смогу спасти кого-то пару часов, выяснив это, как я должен был ...