return std::forward<T>(t);
}
Метафункция make_u преобразует тип T в U, неважно как. Для всех нужных T находится правильный U.
Эта функция косвенно используется в другом месте для вычисления типа в другой функции. Она инстанцируется типом V. У типа V есть операция преобразования в make_u<V> без тела (только объявление).
Теперь к сути. Я точно знаю, что инстанция func с V нужна только для меты, ее тело не нужно, вызов func<V> есть только в unevaluated контексте. Гцц этого не понимает и фэйлит линковку, кланг понимает. Что делать с гцц?
Решил проблему - повезло, что в том коде можно не инстанцировать func. Правда нужно переходить на 17, где есть if constexpr, или писать обертку для функтора с перегруженным operator(). Ну, лучше, чем ничего
Обсуждают сегодня