Баг в компиляторе? (deduction of template pack)
От: watchyourinfo Аргентина  
Дата: 09.10.15 18:18
Оценка:
имеется шаблонный метод типа такого:

template<typename... ForwardArgs>
ArcId AddUnspecifiedArc(ForwardArgs && ...args) { 
    // здесь что0то делаем
}


если вызвать этот метод с "простыми" аргументами, например obj.AddUnspecifiedArc(1, 2),
то видно, что ForwardArgs выводятся правильно как <int, int>.

Проблема возникает, когда пишу obj.AddUnspecifiedArc({1}, {2});
то есть передаю аргументы типа std::initializer_list<int>
Я ожидаю очевидно, чтобы std::initializer_list<int> выводился, но он не выводится.
Я получаю ошибку такого типа:

srcfile:42:21: error: no matching member function for call to 'AddUnspecifiedArc'
ArcId z = probe.AddUnspecifiedArc({ 5 }, { 5 });
~~~~~~^~~~~~~~~~~~~~~~~
srcfile:101:270: note: candidate function not viable: requires 0 arguments, but 2 were provided


Это баг компилятора или моего кода?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.