История изменений
Исправление Siborgium, (текущая версия) :
А лучше даже так:
template <typename ... Traits>
void traitsToString(const State& voxel, std::string& result, Traits&& ... traits) {
auto impl = [&]<typename T>(T && trait) {
if constexpr (requires { result += trait.toString(voxel); }) {
result += trait.toString(voxel);
}
};
(impl(traits), ...);
}
если toString больше нигде не нужно будет делать.
Исходная версия Siborgium, :
А лучше даже так:
template <typename ... Traits>
void traitsToString(const State& voxel, std::string& result, Traits&& ... traits) {
auto impl = [&]<typename T>(T && trait) {
if constexpr (requires (T trait){ result += trait.toString(voxel); }) {
result += trait.toString(voxel);
}
};
(impl(traits), ...);
}
если toString больше нигде не нужно будет делать.