Рассмотрим пример:
#include <iostream>
#include <type_traits>
#include <tuple>
int main() {
auto tup = std::make_tuple(1, 2);
auto [ a, b ] = tup;
decltype(auto) e = a;
std::cout << std::boolalpha << std::is_reference_v<decltype(e)> << std::endl;
}
clang (вывод: false
) и gcc (вывод: true
) не согласуются в этом простом случае. Имея в виду, например, этот Q & As должен ли e
быть ссылкой или это ошибка gcc? Или, может быть, код плохо сформирован?