用于类与函数的C++中的模板类型推导?

yes*_*aaj 15 c++ templates types class function

为什么自动类型推导仅适用于函数而不适用于类?

And*_*nck 17

在特定情况下,您总是可以这样做std::make_pair:

template<class T>
make_foo(T val) {
    return foo<T>(val);
}
Run Code Online (Sandbox Code Playgroud)

编辑:我刚刚在"The C++ Programming Language,Third Edition",第335页中找到了以下内容.Bjarne说:

请注意,永远不会推导出类模板参数.原因在于,几个构造者为一个类提供的灵活性会使这种推论在许多情况下变得不可能,并且在更多的情况下变得模糊不清.

这当然是非常主观的.关于这一点已经有了一些讨论,comp.std.c++并且共识似乎是没有理由不能支持它.这是否是一个好主意是另一个问题......


bol*_*lov 9

Kona会议上,构造函数的模板参数推导(P0091R0)已被批准,这意味着在C++ 17中我们将能够编写:

pair p1{"foo"s, 12};
auto p2 = pair{"foo"s, 12};
f(pair{"foo"s, 12});
Run Code Online (Sandbox Code Playgroud)