我需要实现以下接口:
class xml_writer
{
public:
virtual void write(const void* data, size_t size) = 0;
};
void xml_document::save(xml_writer& writer, const char_t* indent = "\t", unsigned int flags = format_default, xml_encoding encoding = encoding_auto) const;
我想我可以像这样使用 lambda:
// call save on XML passing lambda in place of xml_writer
std::array<char, 4096> request;
xml->save([&](const void* data, const std::size_t size) { std::memcpy(request.begin(), data, size); });
但是很可惜在clang3.1中编译失败!
是否可以使用这样的 lambda,即代替纯虚拟接口?我的重点是减少样板代码,而不是过多的虚拟功能开销。