C/C++ Birden fazla türde return

İstediğin bir çözüm değil biliyorum fakat cast işlemini kullanıcıdan kurtarabiliriz.

C++:
template <typename U, class T_>
U operator()(const T_& obj, const std::string& name) {
    return std::any_cast<U>(ByName(obj, name));

// auto bar = GetByName<int>(foo, "bar")
}
Ben de böyle bir çözüm düşünmüştüm ama dediğine uymuyor. Yine de belki kullanmak ister.
 
// auto bar = GetByName<int>(foo, "bar")
İllegal kullanım olmasa onu düşünmüştüm, silmedim de daha duruyor hala. :(
1713172432443.png

1713172467423.png

Onun yerine şöyle bir şey yaptım en son;
C++:
template<class R_, class T_>
R_ To(const T_& obj, const std::string& name) const {
    auto ret = ByName(obj, name);
    return (ret.has_value()) ? std::any_cast<R_>(ret) : R_{};
}

Fonksiyona çevirmem lazım aslında ama nasıl std::any ile bu şekilde bi recursive sistem yazabilirim tam emin değilim. Classken böyle kalıyor ne yazık ki.
 

Geri
Yukarı