Search code examples
c++c++11constexprstdstring

Is it possible to use std::string in a constant expression?


Using C++11, Ubuntu 14.04, GCC default toolchain.

This code fails:

constexpr std::string constString = "constString";

error: the type ‘const string {aka const std::basic_string}’ of constexpr variable ‘constString’ is not literal... because... ‘std::basic_string’ has a non-trivial destructor

Is it possible to use std::string in aconstexpr? (apparently not...) If so, how? Is there an alternative way to use a character string in a constexpr?


Solution

  • No, and your compiler already gave you a comprehensive explanation.

    But you could do this:

    constexpr char constString[] = "constString";
    

    At runtime, this can be used to construct a std::string when needed.