2010-07-13 1 views
2

Я использую boost::signal с различными сигнатурами функций и различными комбинаторами. В классе, который выглядит как один за пределами, я хочу получить возврат объявления определенного сигнала.Как получить возвращаемый тип сигнала boost ::?

template<typename signal_type> class MyClass 
{ 

    signal_type mSignal; 

    signal_type::result_type getResult() { return mSignal(); } 

} 

Но signal_type::result_type не работает. Так есть способ получить возвращаемый тип?

+1

Его всегда хорошая идея опубликовать сообщение об ошибке, которое у вас есть. –

+0

Я не следую, signal_type :: result_type - это тип возвращаемого значения, что не работает? – Konrad

+0

@ Konrad: см. Ссылку, которую я прокомментировал в принятом ответе – Cogwheel

ответ

2

Вы должны typename использовать зависимые типы:

typename signal_type::result_type getResult() { return mSignal(); } 

зависимых имена (т.е. зависящие от параметра шаблона) предполагается

  • не называют типов, если не с префиксом typename и
  • а не шаблоны имен, если сразу не префикс template.
+0

См. Http://pages.cs.wisc.edu/~driscoll/typename.html для углубленного добра. – Cogwheel

+0

Спасибо, именно то, что я искал. – rallex

Смежные вопросы