I'm trying to implement a variadic method but when I try the following code it doesn't compile:
Configurations.h
#ifndef Test_Configurations_h
#define Test_Configurations_h
#include <vector>
class Configuration
{
public:
    Configuration(){}
    int someData;
};
class Configurations
{
public:
    void addConfiguration (Configuration config);
    template<typename... Args>
    void addConfiguration (Configuration first, Args... args);
private:
    std::vector<Configuration> _configs;
};
#endif
Configurations.cpp
#include "Configurations.h"
void Configurations::addConfiguration (Configuration config)
{
    // do something
}
template<typename... Args>
void Configurations::addConfiguration (Configuration first, Args... args)
{
    // Do something
}
main.cpp
#include <iostream>
#include "Configurations.h"
int main(int argc, const char * argv[]) {
    Configuration c1;
    Configuration c2;
    Configurations configurations;
    configurations.addConfiguration(c1, c2);
    return 0;
}
When I try to call the method
addConfiguration (config1, config2)
The compiler give me the following error:
Undefined symbols for architecture x86_64:
  "void Configurations::addConfiguration<Configuration>(Configuration, Configuration)", referenced from:
      _main in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
I think that I'm not declaring properly the method, but I don't know where is the error.
Thanks in advance!
 
    