Viewing file: pr83720_0.C (1.15 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
// PR c++/83720 // { dg-lto-do assemble }
#pragma GCC diagnostic ignored "-Wreturn-type"
namespace b { class h { public: template <typename ae, typename af> h(ae af::*...) { [] {}; } }; class ai {}; template <typename> class c { public: template <typename ag> void aj(const char *, ag f) { h(f, int()); } }; } template <typename> class al; template <typename e> class i { protected: static e g(const int) { } }; template <typename, typename> class j; template <typename an, typename e, typename... ao> class j<an(ao...), e> : i<e> { typedef i<e> ap;
public: static an aq(const int &ar, ao... as) { ap::g(ar)(as...); } }; template <typename an, typename... ao> class al<an(ao...)> { template <typename, typename a> using ax = a;
public: template <typename e, typename = ax<int, void>, typename = ax<int, void>> al(e); using ay = an (*)(const int &, ao...); ay az; }; template <typename an, typename... ao> template <typename e, typename, typename> al<an(ao...)>::al(e) { az = j<an(ao...), e>::aq; } class k { public: k(al<void(b::ai)>); } d([](b::ai) { struct be { virtual void f(){} }; struct bf; b::c<bf>().aj("", &be::f); });
|