【发布时间】:2020-06-08 12:40:14
【问题描述】:
我有一个std::map,它在运行时无法更改。因此,我已将其标记为 const 我无法将其标记为 constexpr,因为它是非文字类型。
我可以在编译时推导出这张地图的size吗?
#include <map>
#include<string>
int main (){
const std::map <int, std::string> my_map {
{ 42, "foo" },
{ 3, "bar" }
};
constexpr auto items = my_map.size();
return items;
}
This 无法编译并出现错误:
:10:20: 错误:必须初始化 constexpr 变量“项目” 通过常量表达式
constexpr auto items = my_map.size(); ^ ~~~~~~~~~~~~~:10:35: 注意:非 constexpr 函数 'size' 不能用于 一个常量表达式
constexpr auto items = my_map.size();
【问题讨论】:
-
您使用的是哪个版本的 Cpp?这可能在这里相关
-
不行,
constexprs 只能从其他constexprs 推导出来。