Почему следующий код не компилируется ?
Разве нельзя создать переменное количество аргументов в функции шаблоне с переменным количеством типов ?
template<typename... T>
struct caller
{
template<T... F>
static void f()
{
}
};
int main()
{
caller<int>::f<1>();
}
+ g++ -std=c++11 -O2 -Wall -pedantic -pthread main.cpp
main.cpp: In function ‘int main()’:
main.cpp:13:13: error: no matching function for call to ‘caller<int>::f()’
c::f<1>();
^
main.cpp:13:13: note: candidate is:
main.cpp:5:17: note: template<T ...F> static void caller<T>::f() [with T ...F = {F ...}; T = {int}]
static void f()
^
main.cpp:5:17: note: template argument deduction/substitution failed:
main.cpp:13:13: note: invalid template non-type parameter
c::f<1>();
А если передавать через аргументы то работает:
template<typename... T>
struct caller
{
static void f(T... F)
{
}
};
int main()
{
caller<int>::f(1);
}
И через класс тоже:
struct caller
{
template<T... F>
struct inner
{
static void f()
{
}
};
};
int main()
{
caller<int>::inner<1>::f();
}
Здравствуйте, _NN_, Вы писали:
_NN>Почему следующий код не компилируется ?
Clang компилирует
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Здравствуйте, _NN_, Вы писали:
_NN>>Почему следующий код не компилируется ?
EP>Clang компилирует
походу надо сабмитить еще багу в гнусную багзиллу...
Здравствуйте, zaufi, Вы писали:
Z>походу надо сабмитить еще багу в гнусную багзиллу...
скинь плиз ссылку на баг-репорт.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)