Я пытаюсь создать шаблон для функции с несколькими параметрами, а затем псевдоним для конкретного экземпляра. От этого действительно хороший пост:псевдоним для шаблона функции нескольких параметров
C++11: How to alias a function?
Я нашел пример кода, который работает для одного параметра функции и одного параметра шаблона:
#include <iostream>
namespace Bar
{
void test()
{
std::cout << "Test\n";
}
template<typename T>
void test2(T const& a)
{
std::cout << "Test: " << a << std::endl;
}
}
void (&alias)() = Bar::test;
void (&a2)(int const&) = Bar::test2<int>;
int main()
{
Bar::test();
alias();
a2(3);
}
Когда я пытаюсь расширить до двух параметров функции, как, например:
void noBarTest(T const& a, T const& b)
{
std::cout << "noBarTest: " << a << std::endl;
}
void(&hh)(int const&, int const&) = noBarTest<int, int>;
я получаю эти ошибки в Visual Studio:
ошибка C2440: 'инициализации': не удается преобразовать из 'пустоты (__cdecl *) (сопзЬ T &, сопзЬ Т &)' в 'пустоте (__cdecl &) (Const INT &, Const INT &)'
IntelliSense: ссылка типа "пустот (&) (Const INT &, Const INT &)" (не Const квалифицированных) не может быть инициализирован со значением типа ""
Мне показалось, что я следовал за шаблоном, расширяя до 2 аргументов.
Каков правильный синтаксис для этого?
Я не вижу функция noBarTest имеющий параметры шаблона ... шаблон. –
Arunmu
Поскольку это ваш первый вопрос, я предполагаю, что вы новичок в переполнении стека. Итак, Добро пожаловать! Используйте раздел комментариев, если у вас есть трудности с пониманием решений, предлагаемых другими. Если вы найдете рабочее решение, вы можете принять ответ, нажав кнопку «Проверить» под прилавком. Это поможет вам получить больше ответов в следующий раз, когда вы зададите вопрос. – Arunmu
@Arunmu, Спасибо за приветствие. Я не был уверен, когда использовать комментарии, поэтому теперь я знаю. Вы правы, что я оставил объявление шаблона в фрагменте кода. Я был там, но потерял его в редактировании, когда я искал попытку форматирования. – Matt