容器初始化时模板类型推导

Dan*_*lak 4 c++

std::vector我知道可以默认模板类型参数,但是,当我尝试在不提供模板参数的情况下构造 a 时,这不起作用:

#include<vector>

template <typename Int = int>
struct integer{
    Int i;
};

int main(){

    integer num;

    std::vector<integer> vec;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

此代码返回类型值不匹配(编译器资源管理器链接)。是否可以在不写的情况下解决这个问题std::vector<integer<int>>

Sam*_*hik 6

如果您有一个带有默认参数的函数:

 int foo(int bar=0);
Run Code Online (Sandbox Code Playgroud)

要调用这个函数,你仍然需要编写:

 int n=foo();
Run Code Online (Sandbox Code Playgroud)

int n=foo;当然,尝试写作是行不通的。出于同样的原因,如果您的模板参数是默认的,您仍然必须使用

  integer<>
Run Code Online (Sandbox Code Playgroud)

实例化模板而不是

  integer
Run Code Online (Sandbox Code Playgroud)