LINUX.ORG.RU

История изменений

Исправление Siborgium, (текущая версия) :

На плюсах сейчас

На плюсах чуть меньше 10 лет назад. Портянка твоя уже банально с fold expressions в 1.5 раза схлопнется, не говоря уже о концептах.

Цифра, кстати, не от балды. Вот два эквивалентных куска кода. Это «экстремальный» пример и в среднем так хорошо не получится, но все и так понятно.

template<typename ...Traits> struct traitsHaveVoxelInterface {
	template<typename Trait, typename ...RestTraits> constexpr static bool performCheck(
			Trait *trait,
			RestTraits... restTraits
	) {
		if constexpr (std::is_base_of<VoxelTypeInterface, Trait>::value) {
			return true;
		}
		return performCheck(restTraits...);
	}
	constexpr static bool performCheck() {
		return false;
	}
	
	static constexpr bool value = performCheck(static_cast<Traits*>(0)...);
	
};
template <typename ... Traits>
constexpr auto traitsHaveVoxelInterface = false || (std::is_base_of_v<VoxelTypeInterface, Traits> || ...);

А Rust пока показывает просто чудеса скорости при компиляции проекта (но там пока гораздо меньше всего реализовано)

Меньше всего реализовано, но раст показывает чудеса скорости. С чем же это связано?

Исходная версия Siborgium, :

На плюсах сейчас

На плюсах чуть меньше 10 лет назад. Портянка твоя уже банально с fold expressions в 1.5 раза схлопнется, не говоря уже о концептах.

А Rust пока показывает просто чудеса скорости при компиляции проекта (но там пока гораздо меньше всего реализовано)

Меньше всего реализовано, но раст показывает чудеса скорости. С чем же это связано?