2012-01-02 7 views
10

XmacroのイディオムをC++ 11の機能を使って置き換える方法はありますか?できればプリプロセッサを使用しないのですか?私はタプルテンプレートを使うことができると思っていましたが、私はまだそれらの仕事の仕方を突き詰めようとしています。テンプレート/ constexpr/C++ 11のXマクロを置き換える方法はありますか?

+1

+1このテクニックに名前が付いていることを私に警告するため+1。以前はコードで見てきましたが、私はそれを使用しました。しかし、私はそれが何かに命名されたのか分からなかった。 –

答えて

5

XMacrosは、ワイドさまざまなことを行うための一般的なツールです。その多く(列挙子、文字列などのリストの作成など)は、あらゆる種類のテンプレートの機能をはるかに超えています。

おそらく、テンプレートで置き換える方法があることがあります。しかし確かにそれらのすべてではありません。

+0

私はそれが事実であると予想していました。私が現時点で使用している「いくつかのケース」は、テンプレートで置き換えたいのですが、列挙型の文字列化です。 – Naddiseo

+1

@Naddiseo:その場合、絶対にそうではありません。テンプレートには、トークンをそのトークンの文字列表現に変換する能力がありません。これは、それが必要とするものです。 –

+0

C++ 11では、コンパイル時の文字列処理とリフレクション機能を実際に使用することができます。 'std :: enum_name :: value() - > const char *'のようなものは栄光に満ちています。 –

関連する問題