C 中均匀的初始化行不通

Uniform initialization in C++ do not works

本文关键字:初始化 行不通      更新时间:2023-10-16

当我在班级中使用现代JSON时,类似Init类成员:

Test::Test(json config) : m_config{config}
{
}

它不起作用并抛出type::error异常,但是当我这样启动成员

Test::Test(json config) : m_config(config)
{
}

它有效,为什么?

在文档中有所了解。这是它绘制的图片:

using   initializer_list_t = std::initializer_list< detail::json_ref< basic_json > >
// helper type for initializer lists of basic_json values

当然可以定义构造函数:

basic_json (initializer_list_t init, bool type_deduction=true, value_t manual_type=value_t::array)
// create a container (array or object) from an initializer list

由于列表初始化导致过载分辨率首先仅考虑std::initializer_list C'2 C'2 C'2 C'2 C'2 C'2 c'2 c'tor匹配并调用。进行列表初始化时,源对象似乎违反了json类的某种内部约束。

在您的另一个片段中,选择了副本并调用。