При реализации функции, которая принимает параметр обновление указателей на Ts...
, почему я не могу const
-qualify указатели, как это возможно с регулярными параметрами?
Я получаю ошибку несоответствующей подписи на последних GCC и Clang, и я не понимаю, почему, поскольку указатели const
являются только деталью реализации (следовательно, это является законным для регулярных параметров).
template<typename... Ts>
class C
{
void f(int*);
void g(Ts*...);
};
template<typename... Ts>
void C<Ts...>::f(int* const) {} // Legal
template<typename... Ts>
void C<Ts...>::g(Ts* const...) {} // Compiler error
Я получаю эту ошибку:
prog.cc:12:16: error: out-of-line definition of 'g' does not match any declaration in 'C<Ts...>'
void C<Ts...>::g(Ts* const...) {}
^
1 error generated.
Вы также можете увидеть код и ошибки здесь.