У меня есть этот код:
#include <tuple>
#include <memory>
template <typename ...Args>
class Button
{
Button(const std::string& name, Args&& ...args) {
std::tuple<Args...> tuple_ = std::tuple<Args...>(args...);
}
};
template<typename T1, typename ...Args>
void addObject(const std::string& name, Args&& ...args) {
std::unique_ptr<T1> obj(new T1(name, std::forward<Args>(args)...));
//...rest of the code...
}
int main() {
//if we comment the next line it compiles well
addObject<Button>("BtnName", 0, 1, 2);
return 0;
}
Тем не менее, он не компилируется с ошибками типа «ошибка LNK2019: неразрешенный внешний символ ...» или «нет соответствующей функции для вызова» addObject class Button> (const char [8], int, int, int) '". Если мы прокомментируем функцию «addObject», она хорошо скомпилируется.
Как правильно передать аргументы в другой шаблон?