我试图创建一个可变模板类,它为类型列表中的每个类提供了一个方法。示出了一个例子,低于该在类型串的每个类创建一个print
方法:从GCC 4.6.3在注释行中的错误模糊函数调用C++基类
#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.7.2相同的问题(在[liveworkspace](http://liveworkspace.org/code/1a4YN8$0))。感谢复制/可移植的示例顺便说一句。 –
铛3.2树干165721说:'错误:在不同类型的多个基类中发现成员'打印'' – user786653
另请参见[这个问题](http://stackoverflow.com/questions/5368862/why-do-multiple-inherited -functions与 - 相同的名称,但是,不同的签名而不是)。这实质上是一个隐藏规则和解包可变参数模板参数非常有限的能力相结合的问题。 –