gpt4 book ai didi

c++ - 即使实例化不是 constexpr,模板函数声明的 constexpr 是否总是内联?

转载 作者:行者123 更新时间:2023-11-30 02:26:29 24 4
gpt4 key购买 nike

根据这个answer constexpr 函数总是 inline .

可以声明一个模板函数constexpr即使所有特化都不满足成为 constexpr 的要求功能。在最后一种情况下,特化不是 constexpr .

例如:

template<class T>
constexpr decltype(auto) size(const T& a){
return a.size();
}
std::array<int,10> arr;
std::vector<int> vec;
size(arr);//constexpr
size(vec);//not a constexpr;

实例化size<std::vector>不是 constexpr , 但它是 inline

最佳答案

是的;引用 N4640,[dcl.constexpr]/1:

… A function or static data member declared with the constexpr specifier is implicitly an inline function or variable. …

这里的关键是“声明”——重要的是声明,而不是满足constexpr要求。

关于c++ - 即使实例化不是 constexpr,模板函数声明的 constexpr 是否总是内联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42834902/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com