1a4561d93SMichael Buch namespace ignore { 2*3cc98845SMichael Buch struct Dummy {}; 3*3cc98845SMichael Buch auto_ret(T x)4a4561d93SMichael Buchtemplate <typename T> auto auto_ret(T x) { return 0; } with_tag()5a4561d93SMichael Buch[[gnu::abi_tag("test")]] int with_tag() { return 0; } with_tag_template()6a4561d93SMichael Buchtemplate <typename T> [[gnu::abi_tag("test")]] int with_tag_template() { 7a4561d93SMichael Buch return 0; 8a4561d93SMichael Buch } 9a4561d93SMichael Buch decltype_auto_ret(T x)10a4561d93SMichael Buchtemplate <typename T> decltype(auto) decltype_auto_ret(T x) { return 0; } 11a4561d93SMichael Buch } // namespace ignore 12a4561d93SMichael Buch 13*3cc98845SMichael Buch template <typename T> with_tag_template_returns_ignore(T x)14*3cc98845SMichael Buch[[gnu::abi_tag("test")]] ignore::Dummy with_tag_template_returns_ignore(T x) { 15*3cc98845SMichael Buch return {}; 16*3cc98845SMichael Buch } 17*3cc98845SMichael Buch main()18a4561d93SMichael Buchint main() { 19a4561d93SMichael Buch auto v1 = ignore::auto_ret<int>(5); 20a4561d93SMichael Buch auto v2 = ignore::with_tag(); 21a4561d93SMichael Buch auto v3 = ignore::decltype_auto_ret<int>(5); 22a4561d93SMichael Buch auto v4 = ignore::with_tag_template<int>(); 23*3cc98845SMichael Buch auto v5 = with_tag_template_returns_ignore<int>(5); 24a4561d93SMichael Buch } 25