我认为能够使用指定的初始化程序初始化一个引用另一个结构体的结构体会很有用。这种模式经常发生在某些 API(例如 Vulkan)中。例如,考虑以下结构:
struct A {
int v;
};
struct B {
int v;
A* a;
};
struct C {
B* b;
};
Run Code Online (Sandbox Code Playgroud)
和一个函数C作为参数
void func(const C& c) {}
Run Code Online (Sandbox Code Playgroud)
我想出了一种使用unmove()( ref ) 函数将右值转换为左值的方法:
template <typename T>
T& unmove(T&& v) { return v; }
Run Code Online (Sandbox Code Playgroud)
使用这个函数,嵌套的初始化可以写成
func({
.b = &unmove(B{
.v = 1,
.a = &unmove(A{
.v = 2
})
})
});
Run Code Online (Sandbox Code Playgroud)
我的问题:就标准而言,它是否是该功能的有效用法?或者我错过了什么?
是否可以在字符串给出的另一个模板中呈现Jinja2模板?例如,我想要字符串
{{ s1 }}
Run Code Online (Sandbox Code Playgroud)
要呈现给
Hello world
Run Code Online (Sandbox Code Playgroud)
给出以下字典作为参数Template.render:
{ 's1': 'Hello {{ s2 }}', 's2': 'world' }
Run Code Online (Sandbox Code Playgroud)
我知道类似的过程可以使用include标记将内容分隔s1到另一个文件,但在这里我不想遵循这种方式.