您好,
template <typename T>
class testing
{
public:
template <typename R>
testing()
{
// constructor A
}
template <typename R>
testing(const R&)
{
// constructor B
}
};
调用构造函数A的语法是什么?
我将需要在构造函数调用期间传递的类型。有办法打电话吗?构造函数B是一种解决方法,因为我只需要知道类型而不是整个对象。
谢谢,
斯蒂芬
答案 0 :(得分:3)
您可以创建解决方法:
template<class A>
testing(boost::mpl::identity<A>);
// and instantiate like this
testing(boost::mpl::identity<A>());
之前我问过非常相似的问题
C++ invoke explicit template constructor
答案 1 :(得分:2)
你做不到。类模板基于类型T
,因此在实例化类时传递的任何模板参数都将匹配T
而不是R
。
修改:您可能还会发现此帖子很有用:Constructor templates and explicit instantiation
您应该继续使用变通方法(构造函数B)。大多数现代编译器都会优化掉未使用的参数,因此它应该没有区别。