C ++ 11、Ubuntu 14.04、GCCデフォルトツールチェーンを使用します。
このコードは失敗します:
constexpr std::string constString = "constString";
エラー:constexpr変数 'constString'のタイプ 'const string {aka const std :: basic_string}'はリテラルではありません... 'std :: basic_string'は自明でないデストラクタを持っているためです
それを使用することが可能であるstd::string
にconstexpr
?(どうやらそうではない...)もしそうなら、どうやって?で文字列を使用する別の方法はありconstexpr
ますか?
std::string
constexprになりたいのですか?SOにはいくつかのコンパイル時文字列実装があります。エラーメッセージを理解し、リテラル型のみをconstexprにできることを知っている場合、非リテラル型をconstexprにできるかどうかを尋ねる意味は何ですか?同様に、constexprインスタンスが必要になる理由はいくつかあります。そのため、質問を明確にすることをお勧めします
constexpr
いえ、そこには文字列実装があります。std::string
それらの1つではありません。
std::string
はリテラル型ではありません