gpt4 book ai didi

c++ - 有没有办法将 double 隐式转换为 std::array

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:00:14 27 4
gpt4 key购买 nike

我有一个这样的模板类:

template<int dimension>
class Foo{
Foo(std::array<double, dimension>);
}

和一个函数

func(Foo<1> f);

我希望能够像这样调用函数和构造函数:

func(1);
Foo<1> f(1);

代替

func({1});
Foo<1> f({1});

有什么好的方法可以做到这一点吗?

如果无法进行隐式转换,可以 1 为 Foo<1> 添加构造函数吗?仅案例?

最佳答案

double 的隐式转换进入std::array<double, 1>不可能。这将需要为 double 重载转换运算符但这无法完成,因为您不能为内置类型重载运算符。

你可以做的就是添加

Foo(double);

构造函数,然后使用 static_assert喜欢

static_assert(dimension == 1, "single double constructor only works if dimension == 1");

在构造函数的主体中将其限制为仅在数组大小为 1 时起作用. (我喜欢尽可能使用 static_assert,因为它可以让你写出漂亮的、描述性的错误消息)


您应该考虑重命名 dimensionsize因为这就是数组中指定的内容。

关于c++ - 有没有办法将 double 隐式转换为 std::array<double,1>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54576127/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com