Я понимаю (here - один источник), что можно переопределить аргументы шаблона по умолчанию, если два определения не конфликтуют. Таким образом, я пытаюсь скомпилировать следующие с г ++ 5.3.1:Бесконфликтное переопределение аргумента шаблона по умолчанию
template <class = int> class A; // forward declaration
template <class T = A<>> struct B {};
template <class T = int> class A {}; // "= int" here is for clarity
int main() { return 0; }
Компилятор жалуется:
error: redefinition of default argument for ‘class T’
Где мое понимание неправильно?
У вас может быть несколько объявлений одной и той же функции, но с разными параметрами по умолчанию (в разных пределах). – Jarod42
@ Jarod42 это правильно, но тогда вы не переопределяете параметры по умолчанию, поскольку в этом контексте вам недоступны те из других областей применения! – Rerito
Я имею в виду что-то вроде [этого] (https://ideone.com/71tagB). – Jarod42