Ответ 1
main.cpp: In instantiation of ‘void fkt(Foo) [with Foo = int]’:
main.cpp:5:7: required from here
main.cpp:2:6: warning: unused parameter ‘f’ [-Wunused-parameter]
Это все одно предупреждение. Вы получаете предупреждение из трех строк о неиспользуемом параметре. Первые две строки - это компилятор, который пытается помочь вам определить причину предупреждения. Здесь английский перевод:
В экземпляре
fkt
с аргументом шаблонаFoo
какint
, который требовался столбцом строки 5, у вас есть неиспользуемый параметр с именемf
.
fkt
- это шаблон функции. Шаблоны должны быть созданы с заданными аргументами шаблона. Например, если вы используете fkt<int>
, шаблон функции fkt
создается с помощью Foo
как int
. Если вы используете fkt<float>
, шаблон функции fkt
создается с помощью Foo
как float
.
В частности, эта первая строка этого сообщения сообщает вам, что предупреждение встречается внутри fkt
, который был создан с помощью Foo
как int
. Вторая строка предупреждения сообщает вам, что экземпляр произошел в строке 5. Это соответствует этой строке:
fkt(1);
Это экземпляр fkt
с Foo
как int
, потому что аргумент шаблона Foo
выводится из типа аргумента, который вы даете. Поскольку вы проходите 1
, Foo
выводится как int
.