impulso 1,49 gcc versão 4.6.3
std::transform(barcodeFiles.begin(), barcodeFiles.end(), std::ostream_iterator<std::string>(std::cerr, "n"),
boost::bind(&fs::path::string, _1));
Como editar este código?
[65%] Criando objeto CXXc ++ / lib / demultiplex / CMakeFiles / casava_demultiplex.dir / BclDemultiplexer.cpp.o /bak/software/Linux/CASAVA_v1.8.2/src/c++/lib/demultiplex/BclDemultiplexer.cpp: Na função de membro 'const casava :: demultiplex :: BclDemultiplexer :: ClusterCorrectedBarcodeIndex casava :: demultiplex :: BclDemultiplexer :: unsCluster int) const ': /bak/software/Linux/CASAVA_v1.8.2/src/c++/lib/demultiplex/BclDemultiplexer.cpp:65:50: error: nenhuma função correspondente para chamada para 'bind (, boost :: arg &)' /bak/software/Linux/CASAVA_v1.8.2/src/c++/lib/demultiplex/BclDemultiplexer.cpp:65:50
Respostas:
3 para resposta № 1Se você pode usar C ++ 11 (o GCC 4.6 suporta isso usando o sinalizador -std = c ++ 0x), você pode usar uma função lambda e ela se tornará mais legível:
std::transform(barcodeFiles.begin(), barcodeFiles.end(),
std::ostream_iterator<std::string>(std::cerr, "n"),
[](const fs::path& p) {
return p.string();
}
);
6 para resposta № 2
A resposta pode ser encontrada no Perguntas frequentes sobre boost bind
std::transform(
paths.begin(), paths.end(),
std::ostream_iterator<std::string>(
std::cerr, "n"
),
boost::bind(
static_cast<
std::string const & (boost::filesystem::path::*)() const
>(&boost::filesystem::path::string),
_1
)
);