развернуть вариадик
От: Logot Украина  
Дата: 01.12.15 13:54
Оценка:
привет, не въеду, как его развернуть
namespace bs2 = boost::signals2;

template<typename return_type, typename ... args>
struct sig_wrap
{
    typedef bs2::signal_type<return_type (args...)>::type signal_t;
};

error C2146: syntax error : missing ';' before identifier 'signal_t'
error C4430: missing type specifier — int assumed. Note: C++ does not support default-int


как?

VS 2013
Отредактировано 01.12.2015 13:57 Logot . Предыдущая версия . Еще …
Отредактировано 01.12.2015 13:56 Logot . Предыдущая версия .
Отредактировано 01.12.2015 13:55 Logot . Предыдущая версия .
Re: развернуть вариадик
От: watchmaker  
Дата: 01.12.15 14:03
Оценка: 2 (1)
Здравствуйте, Logot, Вы писали:

Как минимум тут первая проблема:
    typedef typename bs2::signal_type<return_type (args...)>::type signal_t;
Re[2]: развернуть вариадик
От: Logot Украина  
Дата: 01.12.15 14:16
Оценка:
Здравствуйте, watchmaker, Вы писали:

W>Здравствуйте, Logot, Вы писали:


W>Как минимум тут первая проблема:

W>
W>    typedef typename bs2::signal_type<return_type (args...)>::type signal_t;
W>


и похоже единственная
Re: развернуть вариадик
От: Кодт Россия  
Дата: 01.12.15 14:50
Оценка: +2
Здравствуйте, Logot, Вы писали:

L>привет, не въеду, как его развернуть


Встречный вопрос: а зачем sig_wrap принимает <return_type, arg1, arg2, etc...>, вместо того, чтобы сделать так же, как bs2?
L>namespace bs2 = boost::signals2;

L>template<typename function_signature>
L>struct sig_wrap
L>{
L>    typedef typename bs2::signal_type<function_signature>::type signal_t;
L>};
Перекуём баги на фичи!
Re[2]: развернуть вариадик
От: Logot Украина  
Дата: 01.12.15 20:40
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Встречный вопрос: а зачем sig_wrap принимает <return_type, arg1, arg2, etc...>, вместо того, чтобы сделать так же, как bs2?

К>
L>>namespace bs2 = boost::signals2;

L>>template<typename function_signature>
L>>struct sig_wrap
L>>{
L>>    typedef typename bs2::signal_type<function_signature>::type signal_t;
L>>};
К>


та да, я потом покрутил и сделал примерно так
typedef bs2::keywords::mutex_type<bs2::dummy_mutex> dummy_mutex;
template<typename signature_type, typename mutex_type = dummy_mutex>
struct sig_wrap
{
    typedef typename bs2::signal_type<signature_type, mutex_type>::type signal_t;
    typedef typename signal_t::slot_type slot_t;
};
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.