Я пытаюсь создать Variadic templated класс, который предоставляет метод для каждого класса в списке типов. Ниже приведен пример, который создает метод print
для каждого класса в списке типов:
#include <iostream>
#include <string>
// Helper class providing a function call
template <typename T>
class PrintHelper
{
public:
void print(const T& t) { std::cout << t << std::endl; }
};
// Provides a print method for each type listed
template <typename... Ts>
class Printer : public PrintHelper<Ts>...
{};
int main()
{
Printer<int, std::string> p;
p.print(std::string("Hello World")); // Ambiguous Call
}
Прокомментированная строка приводит к ошибке из GCC 4.6.3 в комментариях. Каков правильный способ устранения двусмысленности или я должен смотреть на другой дизайн?