2016-01-15 8 views
6

C++ 11以降でユーザー定義属性を作成する方法はありますか?例えばC++ 11のユーザー定義属性ですか?

[[noreturn]] void exit(); 

コンパイラ定義のC++ 11の属性です。私は何かを定義したいと思います

[[comingsoon]] int function(int); 

は、このためのメカニズムはありますか?

編集:私はClangを使用していると言及する必要があります。

+0

[こちら](http://stackoverflow.com/questions/9864328/using-c11-attributes)をご確認ください。 _Attributes(新しいC++ 11の機能)は、コンパイラ拡張のための標準化された構文です。コンパイラの拡張機能を対象としているため、JavaアノテーションやC#属性のように独自の属性を作成する標準的な方法はありません。 – Michael

+0

[MSVSで可能](https://msdn.microsoft.com) /en-us/library/yd21828z.aspx)が、コンパイラの拡張機能です。 – NathanOliver

+2

@NathanOliverそれはC++/CLIです。 –

答えて

3

言語には属性を追加する方法がありません。

もちろんClangを使用している場合はのClangを編集して好きな属性を追加できます。

+1

将来のバージョンのC++でユーザーが属性を追加できるようにする計画があるかどうか知っていますか? – oconnor0

+1

私は分かりません。私はそう思わないでしょう。 C++には、それを有用にするような種類のリフレクション機能はありません。 –

+0

この回答が真であるかどうかわかりません。 https://msdn.microsoft.com/en-us/library/60e6k732.aspx –

4

今のところ、ユーザー属性を定義することはできません。

私の知る限り、この機能が予定されているかどうかに関する情報はありません。 はしかし、Stroustrup氏からこのFAQの答えを見てみましょう。特にこの部分、https://isocpp.org/wiki/faq/cpp11-language-misc#attributes:属性の

一つの計画された使用は、OpenMPサポートの改善です。たとえば:

for [ [ omp::parallel() ] ] (int i=0; i<v.size(); ++i) { 
    // ... 
} 

それは、彼らはプログラマが、それは自分の属性だ定義することができるように計画することを意味するかもしれません。待ちます&参照してください。

関連する問題