相关疑难解决方法(0)

解压为函数参数

理论上是否可以添加语言功能以将结构解压到函数实际参数列表中?我的意思是以下内容。

template< typename ...Ts >
void f(Ts... values) { (std::cout << ... << values) << std::endl; }

struct S { int a; char c; double d; };
S s{1, '2', 3.0};
f([s]);

void g(int, int, int) {}

g([s]); // warning about narrowing conversion

void h(int &, int &, int &) {}

h([s]); // hard error ("cannot bind to...")
Run Code Online (Sandbox Code Playgroud)

处理成员数量未知的合适结构会很方便。因为由于缺乏模板上下文,当前的结构化绑定无法“解压”未知数量的组件(例如 )的结构,而模板上下文只能处理可变数量的类型/值。auto... [x] = s;operator ...

这种方式有什么缺点?

c++ language-lawyer c++17 structured-bindings

5
推荐指数
0
解决办法
940
查看次数

如何初始化div_t对象?

因此,从div函数返回的成员的顺序似乎是实现定义的.

quot1 成员或者是rem

让我们说我做的是这样的:

generate(begin(digits), end(digits), [i = div_t{ quot, 0 }]() mutable {
    i = div(i.quot, 10);
    return i.rem;
})
Run Code Online (Sandbox Code Playgroud)

当然这里的问题是我不知道我是初始化i.quot还是i.rem在我的lambda捕获中.是否i采用div(quot, 1)唯一的跨平台方式来实现这一目标?

c++ member division modulo

3
推荐指数
2
解决办法
369
查看次数