struct X
{
X(X&); // (1)
X(X&&); // (2)
X(const X&); // (3)
X(const X&&); // (4)
};
考虑将绑定和分派这四个构造函数之一的所有可能用法的集合U。X
例如,U的一个元素是:
int main()
{
X x1 = ...;
X x2(x1); // <-- (1) used
}
现在想象我们添加第五个构造函数,如下所示:
struct X
{
X(X&); // (1)
X(X&&); // (2)
X(const X&); // (3)
X(const X&&); // (4)
template<class T> X(T&&); // (5)
};
是否有任何新的重载解决方案,其中U的元素之一现在将(5)
作为更好的匹配而不是(1)
,(2)
或以前那样(3)
调度?(4)