Функция-член вызова шаблонного класса из шаблонной функции
В предоставленном фрагменте кода вызов шаблона функции-члена из другого шаблона приводит к ошибка компиляции. В частности, код пытается вызвать A
Чтобы решить эту проблему, ключевое слово шаблона должно быть явно указано перед вызовом функции-члена. Это связано с тем, что в соответствии со стандартом C '03 14.2/4, когда имя специализации шаблона члена появляется после постфиксного выражения или квалифицированного идентификатора, который зависит от параметра шаблона, перед именем шаблона члена должно стоять ключевое слово шаблона. .
Поэтому следующий код является правильным:
template void g()
{
A a;
a.template f(); // Explicitly specify 'template' keyword
}
Добавив ключевое слово шаблона, компилятор может правильно определить, что f является шаблоном-членом шаблона класса A, и успешно вызвать A
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3