62
задан 13 November 2012 в 14:22

1 ответ

Семь лет спустя и вероятно простое решение затем, все еще работы сегодня.

template< char const * (*name) () >
struct user {
  auto id() { return name(); }
} ;

Использование

constexpr auto lama () { return "Lama"; } 

 int main( int , char * [] )
 {
   auto amuser = user< lama >{} ;
   cout << boolalpha << amuser.id() << endl ;
 }

поклонники Лямбды обслуживаются также

 auto cat = [] () constexpr { return "Cat"; } ;
 auto sneaky = user< cat >{} ;
 cout << boolalpha << sneaky.id() << endl ;
1
ответ дан 31 October 2019 в 14:14

Другие вопросы по тегам:

Похожие вопросы: