所以我想要一个类,它允许一系列类以这种方式调用它们的decode/encode方法:
/// This class manages the decoding/encoding of a sequence of binary fields.
template <typename Derived, typename... Fields >
struct BinarySequence : Fields...
{
using Super = BinarySequence;
bool decode(const char* buffer, size_t& length)
{
return true && Fields...::decode(buffer, length);
}
bool encode(char* buffer, size_t& length)
{
return true && Fields...::encode(buffer, length);
}
};
问题是调用Fields...::decode(buffer, length)
不是正确的方式。如果我有BinarySequence< MessageType, MessageSender, MessageTimeStamp >
,我希望它的解码器执行相同的操作
bool decode(const char* buffer, size_t& length)
{
return MessageType::decode(buffer, length) && MessageSender::decode(buffer, length) && MessageTimeStamp::decode(buffer, length);
}
什么才是正确的方法呢?Visual Studio Code 2017
1条答案
按热度按时间tvz2xvvm1#
看看fold expressions。正确的语法是:
这需要C++17或更高版本。