コードに問題があります。これにより
/***Check if type is simple template***/
template <template<class...> class>
constexpr bool is_template_type()
{ return true; }
template <class>
constexpr bool is_template_type()
{ return false; }
vector
は、変数を作成するための有効な型であれば、あなたは確認することができます:ここで あなたは名前がテンプレートタイプであるかどうかをチェックするのに役立ちます型特性です。だから、:あなたはclass template
の変数を作成することはできませんので
static_assert(!is_template_type<vector>(),
"vector is not valid type for creating a variable");
は、コンパイルが失敗します。 std::vector
に保存するTYPE
を指定する必要があります。あなたの質問のタイトルは言う:文字列
の
ベクトルは、あなたが代わりにstd::vector<std::string>
変数を作成する必要があります。 "" + ch
:
あなたのコードのもう一つの問題はこれです。 あなたはそれが何と思いますか? ""
タイプはchar const[1]
であり、ch
タイプはchar
です。 char const[1]
は暗黙的にchar const *
に変換可能で、ポインタに整数値を追加できるのでコンパイルできます。しかし、これはあなたが望むものではありません!ここで
は、メモリ内のあなたの""
です:あなたは""
にch
を追加すると
`\0' ? ? ? ? ? ? ...
/\
、これが結果です:
//ch is 5 for example
`\0' ? ? ? ? ? ? ...
/\
だから、あなたには、いくつかの未指定アドレスとstd::string
を作成します。実際には、配列の範囲外にアクセスすることはC++のUndefined Behaviorです。
std::string() + ch
またはユーザーW.F.の文字列リテラル構文を使用する必要があります。あなたの質問に彼のコメントで掲示される。不特定の値を使用すると、未定義の動作があまりにもあるので
また、ch
を初期化することを忘れないでください。
エラーメッセージは、なぜそれが動作しないかを示すはずです。エラーを検索しようとしましたか? Googleにはたくさんの結果があります。 – NathanOliver
実際に動作する実際のコードを投稿します。構文エラーがあります。 –
多分あなたは文字列のリテラルに興味があるでしょう:[例](https://ideone.com/OjOV6Y) –