Как указал ecatmur, на этот вопрос уже есть ответ здесь< /а>.
Этот вопрос очевидно не дублирует конечный возвращаемый тип с использованием decltype с функцией шаблона с переменным числом аргументов. На самом деле он пытается предложить более простое решение для решения проблемы в этой ветке. Вопрос в том, является ли это решение правильным по стандарту, потому что GCC и clang не согласны с ним. Просто прочитайте вопрос немного внимательнее, и вы это поймете.
Этот вопрос навеян этим. Я пытаюсь придумать более простое решение, чем те, которые уже были предоставлены, и в итоге получаю следующее:
#include <iostream>
struct S {
template <typename T>
static T sum(T t){
return t;
}
template <typename T, typename ...U>
static auto sum(T t, U... u) -> decltype(t + sum(u...)) {
return t + sum(u...);
}
};
int main() {
std::cout << S::sum(1, 1.5, 2) << '\n';
}
Хотя это решение работает с GCC, оно вообще не решает проблему с clang. Так вот, мне интересно, какой из них правильный.