aboutsummaryrefslogtreecommitdiffhomepage
path: root/public/posts/2021-10-02/cpp-you-can-use-keywords-in-attributes
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2023-03-19 00:47:11 +0900
committernsfisis <nsfisis@gmail.com>2023-03-19 00:47:11 +0900
commit88b66f82aae2d7784002b07bfc7877932da3ec94 (patch)
tree4950a8f9f740715f2c56383309edab97df37a2f5 /public/posts/2021-10-02/cpp-you-can-use-keywords-in-attributes
parent0e5fff11e9a455273dad77fc26796af03ddf08d3 (diff)
downloadblog.nsfisis.dev-88b66f82aae2d7784002b07bfc7877932da3ec94.tar.gz
blog.nsfisis.dev-88b66f82aae2d7784002b07bfc7877932da3ec94.tar.zst
blog.nsfisis.dev-88b66f82aae2d7784002b07bfc7877932da3ec94.zip
fix(content): fix XML notations
Diffstat (limited to 'public/posts/2021-10-02/cpp-you-can-use-keywords-in-attributes')
-rw-r--r--public/posts/2021-10-02/cpp-you-can-use-keywords-in-attributes/index.html36
1 files changed, 18 insertions, 18 deletions
diff --git a/public/posts/2021-10-02/cpp-you-can-use-keywords-in-attributes/index.html b/public/posts/2021-10-02/cpp-you-can-use-keywords-in-attributes/index.html
index dc9d084..76806ba 100644
--- a/public/posts/2021-10-02/cpp-you-can-use-keywords-in-attributes/index.html
+++ b/public/posts/2021-10-02/cpp-you-can-use-keywords-in-attributes/index.html
@@ -9,7 +9,7 @@
<meta name="keywords" content="C++,C++ 17">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>【C++】 属性構文の属性名にはキーワードが使える | REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=48694677b43b77e5c45f25e6bfdebb41">
+ <link rel="stylesheet" href="/style.css?h=36f8a090080ebb76d78b17f1d93b3ba4">
<link rel="stylesheet" href="/hl.css?h=340e65ffd5c17713efc9107c06304f7b">
</head>
<body class="single">
@@ -57,7 +57,7 @@
</ol>
</section>
<p>
- この記事は Qiita から移植してきたものです。 元 URL: <a href="https://qiita.com/nsfisis/items/94090937bcf860cfa93b">https://qiita.com/nsfisis/items/94090937bcf860cfa93b</a>
+ この記事は Qiita から移植してきたものです。 元 URL: <a href="https://qiita.com/nsfisis/items/94090937bcf860cfa93b">https://qiita.com/nsfisis/items/94090937bcf860cfa93b</a>
</p>
<p>
@@ -66,7 +66,7 @@
</p>
<p>
- タイトル落ち。まずはこのコードを見て欲しい。
+ タイトル落ち。まずはこのコードを見て欲しい。
</p>
<pre class="highlight" language="cpp" linenumbering="unnumbered"><code class="highlight"><span class="hljs-meta">#<span class="hljs-keyword">include</span> <span class="hljs-string">&lt;iostream&gt;</span></span>
@@ -86,25 +86,25 @@
[[<span class="hljs-keyword">virtual</span>]] [[<span class="hljs-type">void</span>]] [[<span class="hljs-keyword">volatile</span>]] [[<span class="hljs-type">wchar_t</span>]] [[<span class="hljs-keyword">while</span>]] [[<span class="hljs-keyword">xor</span>]] [[<span class="hljs-keyword">xor_eq</span>]]
<span class="hljs-comment">// [[using]]</span>
<span class="hljs-type">int</span> <span class="hljs-built_in">main</span>() {
-std::cout &lt;&lt; <span class="hljs-string">&quot;Hello, World!&quot;</span> &lt;&lt; std::endl;
+ std::cout &lt;&lt; <span class="hljs-string">&quot;Hello, World!&quot;</span> &lt;&lt; std::endl;
}</code></pre>
<blockquote>
<p>
- コンパイラのバージョン $ clang++ –version Apple clang version 11.0.0 (clang-1100.0.33.8) Target: x86_64-apple-darwin19.6.0 Thread model: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
+ コンパイラのバージョン $ clang++ –version Apple clang version 11.0.0 (clang-1100.0.33.8) Target: x86_64-apple-darwin19.6.0 Thread model: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
</p>
<p>
- コンパイルコマンド (C17指定) $ clang –std=c++17 hoge.cpp
+ コンパイルコマンド (C17指定) $ clang –std=c++17 hoge.cpp
</p>
</blockquote>
<p>
- この記事から得られるものはこれ以上ないので以下は蛇足になる。
+ この記事から得られるものはこれ以上ないので以下は蛇足になる。
</p>
<p>
- 別件で cppreference.com の <a href="https://en.cppreference.com/w/cpp/language/identifiers">identifier のページ</a> を読んでいた時、次の文が目に止まった。
+ 別件で cppreference.com の <a href="https://en.cppreference.com/w/cpp/language/identifiers">identifier のページ</a> を読んでいた時、次の文が目に止まった。
</p>
<blockquote>
@@ -121,40 +121,40 @@ std::cout &lt;&lt; <span class="hljs-string">&quot;Hello, World!&quot;</span> &l
</blockquote>
<p>
- キーワードでも属性として指定する場合は非キーワードとして使えるらしい。 実際にやってみる。
+ キーワードでも属性として指定する場合は非キーワードとして使えるらしい。 実際にやってみる。
</p>
<p>
- 同サイトの <a href="https://en.cppreference.com/w/cpp/keyword">keywords のページ</a> から一覧を拝借し、上のコードが出来上がった (C++17 においてキーワードでないものなど、一部省いている)。 大量の警告 (unknown attribute `〇〇&apos; ignored) がコンパイラから出力されるが、コンパイルできる。
+ 同サイトの <a href="https://en.cppreference.com/w/cpp/keyword">keywords のページ</a> から一覧を拝借し、上のコードが出来上がった (C++17 においてキーワードでないものなど、一部省いている)。 大量の警告 (unknown attribute `〇〇&apos; ignored) がコンパイラから出力されるが、コンパイルできる。
</p>
<p>
- 上のコードでは <code>[[using]]</code> をコメントアウトしているが、これは <code>using</code> キーワードのみ属性構文の中で意味を持つからであり、このコメントアウトを外すとコンパイルに失敗する。
+ 上のコードでは <code>[[using]]</code> をコメントアウトしているが、これは <code>using</code> キーワードのみ属性構文の中で意味を持つからであり、このコメントアウトを外すとコンパイルに失敗する。
</p>
<pre class="highlight" language="cpp" linenumbering="unnumbered"><code class="highlight"><span class="hljs-comment">// using の例</span>
[[<span class="hljs-keyword">using</span> foo: attr1, attr2]] <span class="hljs-type">int</span> x; <span class="hljs-comment">// [[foo::attr1, foo::attr2]] の糖衣構文</span></code></pre>
<p>
- C++17 の仕様も見てみる (正確には標準化前のドラフト)。
+ C++17 の仕様も見てみる (正確には標準化前のドラフト)。
</p>
<p>
- 引用元: <a href="https://timsong-cpp.github.io/cppwp/n4659/dcl.attr#grammar-4">https://timsong-cpp.github.io/cppwp/n4659/dcl.attr#grammar-4</a>
+ 引用元: <a href="https://timsong-cpp.github.io/cppwp/n4659/dcl.attr#grammar-4">https://timsong-cpp.github.io/cppwp/n4659/dcl.attr#grammar-4</a>
</p>
<blockquote>
<p>
- If a keyword or an alternative token that satisfies the syntactic requirements of an identifier is contained in an attribute-token, it is considered an identifier.
+ If a keyword or an alternative token that satisfies the syntactic requirements of an identifier is contained in an attribute-token, it is considered an identifier.
</p>
</blockquote>
<p>
- 「<code>identifier</code> の構文上の要件を満たすキーワードまたは代替トークンが <code>attribute-token</code> に含まれている場合、<code>identifier</code> とみなされる」とある。どうやら間違いないようだ。
+ 「<code>identifier</code> の構文上の要件を満たすキーワードまたは代替トークンが <code>attribute-token</code> に含まれている場合、<code>identifier</code> とみなされる」とある。どうやら間違いないようだ。
</p>
<p>
- ところで、代替トークン (alternative token) とは <code>and</code> (<code>&amp;</code>) や <code>bitor</code> (<code>|</code>) などのことだが、<code>identifier</code> の構文上の要件を満たさないような代替トークンなどあるのか? 疑問に思って調べたところ、代替トークンという語にはダイグラフも含まれるらしい (参考: <a href="https://timsong-cpp.github.io/cppwp/n4659/lex.digraph">同ドラフト</a>)
+ ところで、代替トークン (alternative token) とは <code>and</code> (<code>&amp;</code>) や <code>bitor</code> (<code>|</code>) などのことだが、<code>identifier</code> の構文上の要件を満たさないような代替トークンなどあるのか? 疑問に思って調べたところ、代替トークンという語にはダイグラフも含まれるらしい (参考: <a href="https://timsong-cpp.github.io/cppwp/n4659/lex.digraph">同ドラフト</a>)
</p>
<ul>
@@ -184,11 +184,11 @@ std::cout &lt;&lt; <span class="hljs-string">&quot;Hello, World!&quot;</span> &l
</ul>
<p>
- 「<code>identifier</code> の構文上の要件を満たさないような代替トークン」はこれらが当てはまると思われる。
+ 「<code>identifier</code> の構文上の要件を満たさないような代替トークン」はこれらが当てはまると思われる。
</p>
<p>
- 調べた感想: 字句解析器か構文解析器が辛そう
+ 調べた感想: 字句解析器か構文解析器が辛そう
</p>
</div>
</article>