【发布时间】:2018-04-04 06:48:21
【问题描述】:
#include <utility>
template<class T1, class T2>
struct mypair : std::pair<T1, T2>
{ using std::pair<T1, T2>::pair; };
int main()
{
(void)std::pair(2, 3); // It works
(void)mypair(2, 3); // It doesn't work
}
上面的格式是否正确?
如果构造函数被继承,是否可以在第二种情况下推断出类模板参数? std::pair的构造函数是否参与创建mypair的隐式推导指南?
我的编译器是 g++ 7.2.0。
【问题讨论】:
-
使用 std::pair
::pair 执行 ADL 时;被忽略 -
@HariomSingh - 你能支持一下吗?我也是那么想的。但随后 [namespace.udecl]/16.
-
@StoryTeller 是的,我正在研究这个例子。调查 ADL 的规则
-
@HariomSingh - 你会浪费你的时间。这是关于一般模板的重载解决方案。不仅仅是 ADL。
-
现在更是如此:)
标签: c++ templates g++ c++17 template-argument-deduction