Re: Оптимизация: убрать вычисление параметров у пустой функции
От: sergii.p  
Дата: 15.09.22 18:47
Оценка:
Здравствуйте, adb, Вы писали:

adb>Есть ли какой-нибудь универсальный метод сделать нужное без макросов и лишних If?


похоже, вам нужно что-то типа lazy. В шарпе он есть, в С++ нет, но можно сделать самому.

template<typename T>
struct lazy {
    using Func = std::function<T()>;
    lazy(Func&& f) : funcOrVal { std::move(f) } {}
    operator T() {
        if(funcOrVal.index() == 0){
            funcOrVal = std::get<Func>(funcOrVal)();
        }
        return std::get<T>(funcOrVal);
    }
    private:
        std::variant<Func, T> funcOrVal;
};


но тогда надо принимать lazy везде, где вы принимаете QString. Ну и принимать все риски отложенных вычислений.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.