小编use*_*963的帖子

std :: make_array常用类型的基本原理

std :: make_array使用公共类型.但是,我的主要问题是它允许代码编译,否则将无法编译:

template <typename T>
void foo(T a, T b)
{
}

int main()
{
    auto arr = std::experimental::make_array(1, 3.0); // Compiles
    foo(1, 3.0); // a and b types must match
    std::array<int, 2> arr2{1, 3.0}; // narrowing conversion
}
Run Code Online (Sandbox Code Playgroud)

这不一定是坏事.但我发现它不一致.请注意,由于模板参数推导的工作方式,std::make_array<int>实际上禁用了推导(因为您明确指定了类型),因此无法解决问题.

在这里使用普通类型的理由是什么?

c++ c++17

5
推荐指数
1
解决办法
772
查看次数

标签 统计

c++ ×1

c++17 ×1