4

static_assert によって出力されるものを組み合わせる方法はありますか? 私が意味するのはこれです:

template<class T>
struct X
{
static_assert(std::is_signed<T>::value, "Type " + T + " must be signed.");//this doesn't work
};
4

1 に答える 1

4

これがコンパイルされないことに基づいて

int main()
{
   const char c[2] = "1";
   static_assert(1==1, c)
}

これも

int main()
{
   const char* c = "1";
   static_assert(1==1, c)
}

両方ともエラーがある場合error: expected a string literal、それは不可能であると結論付けなければなりません。

「文字列リテラルは、二重引用符 (") で囲まれたソース文字セットの 0 個以上の文字で構成されます。文字列リテラルは、まとめて null で終わる文字列を形成する一連の文字を表します。" - C++ 文字列リテラル

Boost::StaticAssertこれにより、探しているものが得られる可能性があるため、使用を検討することをお勧めします。

于 2011-04-09T10:26:04.110 に答える