// PR c++/80471 // { dg-do compile { target c++14 } } // { dg-additional-options "-fconcepts" } template constexpr bool is_same = false; template constexpr bool is_same = true; template decltype(auto) f(T&& a){return a;} decltype(auto) g(auto&& a){return a;} auto z = [](auto&& a) -> decltype(auto) { return a; }; int main() { int i; static_assert(is_same< decltype(f(i)), int& >, ""); static_assert(is_same< decltype(g(i)), int& >, ""); static_assert(is_same< decltype(z(i)), int& >, ""); }