Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.old-deja/g++.mike/p5840.C @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
// { dg-do run } // prms-id: 5840 class Signal { public: int Name(void) { return 1; } }; class Derived : public Signal { public: int Name(void) { return 2; } }; template <class Foo , int (Foo::*Id)(void)> class Bar { public: int value (Foo* a) { return (a->*Id)(); } }; /* The following line is illegal under the new rules for non-type template arguments in the standard, so it is commented out. */ /* template class Bar <Derived, &Signal::Name>; */ template class Bar <Signal, &Signal::Name>; template class Bar <Derived, &Derived::Name>; Derived a; /* Bar<Derived, &Signal::Name> dispatcher1; */ Bar<Derived, &Derived::Name> dispatcher2; int main() { /* int i1 = dispatcher1.value(&a); */ int i2 = dispatcher2.value(&a); return /* i1 != 1 || */ i2 != 2; }