Я пытаюсь скомпилировать репо в Linux, но у меня есть некоторые проблемы на этом этапе.
* util / BinarySerialization.hpp
template <typename T> inline
typename boost::enable_if<boost::is_pod<T>, void>::type
writeBinary(const T& data, std::ostream& outputStream)
{
...
}
template <typename T> inline
typename boost::enable_if<boost::is_pod<T>, void>::type
writeBinary(const std::vector<T>& data, std::ostream& outputStream)
{
...
}
template <typename T> inline
typename boost::disable_if<boost::is_pod<T>, void>::type
writeBinary(const std::vector<T>& data, std::ostream& outputStream)
{
// write vector length
size_t length = data.size();
outputStream.write(reinterpret_cast<const char*>(&length), sizeof(length));
if (!outputStream) throw IOException();
// write vector data one by one
for (size_t i = 0; i < length; ++i)
writeBinary(data[i], outputStream); // error!
}
void writeBinary(const std::string& data, std::ostream& outputStream);
* serialization / ElementBS.cpp
void bil::writeBinary(const Element& data, std::ostream& outputStream)
{
writeBinary(data.m_name, outputStream);
writeBinary(data.m_options, outputStream);
}
* xdlrc / model / Element.hpp
typedef std::vector<std::string> ConfigurationOptions;
class Element {
public:
Element();
std::string& name();
const std::string& name() const;
ConfigurationOptions& options();
const ConfigurationOptions& options() const;
void clear();
private:
friend void writeBinary(const Element& data, std::ostream& outputStream);
friend void readBinary(Element& data, std::istream& inputStream);
std::string m_name;
ConfigurationOptions m_options;
};
util / BinarySerialization.hpp: в экземпляре 'typename boost :: disable_if:: type bil :: writeBinary (const std :: vector &, std :: ostream &) [с T = std :: __ cxx11 :: basic_string ;typename boost :: disable_if:: type = void;std :: ostream = std :: basic_ostream ] ':
serialization / ElementBS.cpp: 16: 45: необходимо отсюда
util / BinarySerialization.hpp: 78: 21: ошибка: нет соответствующей функции длявызов 'writeBinary (const value_type &, std :: ostream &)'
writeBinary (data [i], outputStream);
...
BinarySerialization.hpp: 31: 5: ошибка: тип не указан "введите 'in' struct boost :: enable_if, void> '
Первый writeBinary в ElementBS.cpp совпадает с последней функцией в BinarySerialization.hpp, а вторая функция в ElementBS.cpp совпадает с третьей функцией.Но, writeBinary (data [i], outputStream);в 3-й функции не может соответствовать ни одной функции.Я не знаю, как это исправить;