• 0 Posts
  • 48 Comments
Joined 6 months ago
cake
Cake day: March 22nd, 2024

help-circle

  • You already can do that with C++20 concepts and the requires expression

    template <typename T>
    concept has_member_foo = requires(T t) {
        t.foo();
    };
    
    // Will fail to instantiate (with nice error 
    // message) if t.foo() is ill-formed
    template <has_member_foo T>
    void bar(T t) {
        // ...
    }
    
    // abbreviated form of above
    void baz(has_member_foo auto t) {
        // ...
    }
    
    // verbose form of above
    template <typename T> requires
        has_member_foo<T>
    void biz(T t) {
        // ...
    }
    
    // same as above but with anonymous concept
    template <typename T> requires
        requires(T t) { t.foo(); }
    void bom(T t) {
        // ...
    }
    
    // If already inside a function
    if constexpr (has_member_foo<T>) {
        // ...
    }
    
    // Same but with anonymous concept
    if constexpr (requires(T t) { t.foo(); }) {
        // ...
    }
    


  • azi@mander.xyztoScience Memes@mander.xyzY tho
    link
    fedilink
    English
    arrow-up
    15
    ·
    edit-2
    4 days ago

    There’s a bunch of species of cactus (family Cactaceae) but only Rhipsalis baccifera is found in the old world. Even weirder is that it’s not just found in the Americas and sub-Saharan Africa but also Sri Lanka for some reason.

    Map of Cactus ranges. Rhipsalis baccifera is found in Sri Lanka and sub-Saharan Africa while all other species are found in the Americas