Pull to refresh

Comments 5

Надо чтобы со всеми этими костылями Rust не стал сложным как modern C++

С каких пор С++ сложный?

21,23,26

template<typename T, typename = std::enable_if_t<
    std::conjunction_v<
        std::is_nothrow_move_constructible<T>,
        std::negation<std::is_reference<T>>,
        std::disjunction<
            std::is_trivially_copyable<T>,
            std::is_same<std::decay_t<T>, std::string>
        >
    >
>>
constexpr decltype(auto) process(T&& val) noexcept(noexcept(std::declval<T>().foo()));

Вместо

fn process<T>(val: T) -> T
where
    T: Sized + (Copy или T == String),  // псевдокод

"Или" чуть сложнее, но не важно

Плюс в Rust компилятор ловит UB до ревью. В C++ ревьюер должен сам искать use-after-move, dangling references, ODR violations

С++ 20 и concepts? Видимо об этом не слышали. Вы там хоть пробовали включать хоть часть опций компилятора что бы ловить UB?

Максимально проходной релиз

Sign up to leave a comment.

Articles