我正在尝试创建一个可变参数模板类,它为类型列表中的每个类提供一个方法。下面显示了一个示例,它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 在注释行上出现错误。解决歧义的正确方法是什么,或者我应该寻找不同的设计?