teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

update

2021/03/16 15:34

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -11,7 +11,7 @@
11
11
 
12
12
  `main`関数が意図通りに実装されていません。~~質問中にあるコードでは「`function::measure`クラスに値`function::able`を指定して一時オブジェクトを構築し、同一行内でそのオブジェクトを破棄」してしまいます。つまりコード区間の時間計測としては全く機能せず、常に`0 ms`と出力されるはずです。~~
13
13
 
14
- 訂正:これは[Most Vexing Parse](https://en.wikipedia.org/wiki/Most_vexing_parse)(の複雑なケース)に該当します。構文的には`function::measure`型の変数`function::able`宣言と解釈されますが、これは意味論(セマンティクス)上は不正な宣言となるためコンパイルエラーとみなされます。StackOverfloaの[Most vexing parse with a qualified-id - or not?](https://stackoverflow.com/questions/28955859/)や[Is Type(::x); valid?](https://stackoverflow.com/questions/24623071/)もご参考に。
14
+ 訂正:[Most Vexing Parse](https://en.wikipedia.org/wiki/Most_vexing_parse)(の複雑なケース)に該当します。構文的には`function::measure`型の変数`function::able`宣言と解釈されますが、これは意味論(セマンティクス)上は不正な宣言となるためコンパイルエラーとみなされます。StackOverfloaの[Most vexing parse with a qualified-id - or not?](https://stackoverflow.com/questions/28955859/)や[Is Type(::x); valid?](https://stackoverflow.com/questions/24623071/)もご参考に。
15
15
 
16
16
  ```cpp
17
17
  int main() {

2

update

2021/03/16 15:34

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -9,8 +9,10 @@
9
9
  ----
10
10
  > 記法をはじめとして、このコードに対する指摘・アドバイス
11
11
 
12
- `main`関数が意図通りに実装されていません。質問中にあるコードでは「`function::measure`クラスに値`function::able`を指定して一時オブジェクトを構築し、同一行内でそのオブジェクトを破棄」してしまいます。つまりコード区間の時間計測としては全く機能せず、常に`0 ms`と出力されるはずです。
12
+ `main`関数が意図通りに実装されていません。~~質問中にあるコードでは「`function::measure`クラスに値`function::able`を指定して一時オブジェクトを構築し、同一行内でそのオブジェクトを破棄」してしまいます。つまりコード区間の時間計測としては全く機能せず、常に`0 ms`と出力されるはずです。~~
13
13
 
14
+ 訂正:これは[Most Vexing Parse](https://en.wikipedia.org/wiki/Most_vexing_parse)(の複雑なケース)に該当します。構文的には`function::measure`型の変数`function::able`宣言と解釈されますが、これは意味論(セマンティクス)上は不正な宣言となるためコンパイルエラーとみなされます。StackOverfloaの[Most vexing parse with a qualified-id - or not?](https://stackoverflow.com/questions/28955859/)や[Is Type(::x); valid?](https://stackoverflow.com/questions/24623071/)もご参考に。
15
+
14
16
  ```cpp
15
17
  int main() {
16
18
  function::measure(function::able);

1

refinement

2021/03/16 15:32

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -6,9 +6,10 @@
6
6
 
7
7
  (前提条件が偽のため、この質問はスキップします)
8
8
 
9
+ ----
9
10
  > 記法をはじめとして、このコードに対する指摘・アドバイス
10
11
 
11
- `main`関数が意図通りに実装されていません。質問中にあるコードでは「`function::measure`クラスに値`function::able`を指定して一時オブジェクトを構築し、同一行内でそのオブジェクトを破棄」してしまいます。つまりコード区間の時間計測として機能しま
12
+ `main`関数が意図通りに実装されていません。質問中にあるコードでは「`function::measure`クラスに値`function::able`を指定して一時オブジェクトを構築し、同一行内でそのオブジェクトを破棄」してしまいます。つまりコード区間の時間計測としては全く機能せず、常に`0 ms`と出力されるはずです
12
13
 
13
14
  ```cpp
14
15
  int main() {
@@ -21,9 +22,9 @@
21
22
 
22
23
  ```cpp
23
24
  int main() {
24
- function::measure span(function::able);
25
+ function::measure span(function::able); // オブジェクト作成=計測開始
25
26
  // (計測対象の処理)
26
- } // ここでspanオブジェクトが破棄される
27
+ } // ここでオブジェクトが破棄される=計測終了
27
28
  ```
28
29
 
29
30
  また、全般的に名前付けルールが少々気になりました。