【发布时间】:2018-06-20 07:25:54
【问题描述】:
std::make_array 提议的函数here 的当前状态如何?我找不到任何关于它可能被接受的信息。根据cppreference.com,它位于std::experimental 命名空间中。 C++ compiler support 和 Wikipedia-C++17、Wikipedia-C++20 和 C++17 标准草案中根本没有提到它。
【问题讨论】:
-
std::make_array从 C++17 开始有点没用,不是吗?我们现在可以拥有std::array arr = { 1, 2, 3, 4, 5 };,而无需指定类型+大小。 -
@DeiDei - 在 C++17 中 - 我们只能省略数组大小吗?我的意思是 - 这可以帮助做这样的事情:
auto a = std::make_array<int>(1, (float)1.2, 'x')- 希望编译器只计算大小 - 但不能使用推导指南,因为类型不同(但可以转换为所需的类型) -
@PiotrNycz - 你也不能用
std::make_array做到这一点。您在包中指定了一种。其余的仍在推断和检查。 -
@StoryTeller 在示例中(在链接的提案中)我看到了这个:
auto a2 = make_array<long>(2, 3U); // explicit destination type- 看起来 - 有可能吗? -
@PiotrNycz - 提案使用
std::common_type。仅当所需的目标类型 是 通用类型或更大的类型时,它才会起作用。你自己的尝试是行不通的,因为常见的类型是float,而不是int。