C ++为什么不能在constexpr函数中调用字符串大小功能

时间:2015-07-23 06:12:20

标签: c++ string c++11 size constexpr

   constexpr bool isShorter(const string &s1, const string &s2)
   {
        return s1.size() < s2.size();
   }

编译时说:“错误调用非constexpr函数”

2 个答案:

答案 0 :(得分:1)

您无法在constexpr内部调用非constexpr函数。而且,正如您从here所看到的那样,std::string::size()不是constexpr

答案 1 :(得分:1)

std::string::size()不是constexpr

使用文字c-string,你可以这样做:

template <std::size_t N1, std::size_t N2>
constexpr bool isShorter(const char (&)[N1], const char (&)[N2])
{
    return N1 < Ns;
}