Ошибка G ++ при игре с вариадическими шаблонами

//class we're trying to generate
template <int a, foo b>
class A
{
public:
A()
{
std::cout << a << "," << (int)b << std::endl;

}
};

//class which generates information
template <typename T>
struct B
{
typedef T value_type;
static const T val;
};

template <typename... B>
struct madscience_intitializer
{
template <typename B::value_type... args>
using ret_type = A<args...>;
};

int main()
{
madscience_intitializer<B<int>,B<foo> >::ret_type<1,foo::y> a;
}

В G ++ я получаю

/home/njclimer/source/testdir/main/main2.cpp: In function 'int main()':
/home/njclimer/source/testdir/main/main2.cpp:38:61: internal compiler error: in dependent_type_p, at cp/pt.c:19526
madscience_intitializer<B<int>,B<foo> >::ret_type<1,foo::y> a;Please submit a full bug report,
with preprocessed source if appropriate.
See <http://bugzilla.redhat.com/bugzilla> for instructions.
Preprocessed source stored into /tmp/ccAhk6TK.out file, please attach this to your bugreport.

Кто-нибудь еще сталкивался с этим? Это фактическая ошибка с компилятором или это ошибка в моем коде?

я бегу

g++ (GCC) 4.8.2 20131212 (Red Hat 4.8.2-7)
^

С флагами -std = gnu ++ 0x -O2 -g

0

Решение

Очевидно, что компилятор не должен аварийно завершить работу, но я думаю, ваш код не будет компилироваться.

Вы не можете передавать нецелые типы в качестве параметров шаблона, а это:

шаблон
используя ret_type = A;

Должно быть

используя ret_type = A;

-1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector