回答編集履歴

3

update

2021/03/16 15:34

投稿

yohhoy
yohhoy

スコア6191

test CHANGED
@@ -24,7 +24,7 @@
24
24
 
25
25
 
26
26
 
27
- 訂正:これは[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/)もご参考に。
27
+ 訂正:[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/)もご参考に。
28
28
 
29
29
 
30
30
 

2

update

2021/03/16 15:34

投稿

yohhoy
yohhoy

スコア6191

test CHANGED
@@ -20,7 +20,11 @@
20
20
 
21
21
 
22
22
 
23
- `main`関数が意図通りに実装されていません。質問中にあるコードでは「`function::measure`クラスに値`function::able`を指定して一時オブジェクトを構築し、同一行内でそのオブジェクトを破棄」してしまいます。つまりコード区間の時間計測としては全く機能せず、常に`0 ms`と出力されるはずです。
23
+ `main`関数が意図通りに実装されていません。~~質問中にあるコードでは「`function::measure`クラスに値`function::able`を指定して一時オブジェクトを構築し、同一行内でそのオブジェクトを破棄」してしまいます。つまりコード区間の時間計測としては全く機能せず、常に`0 ms`と出力されるはずです。~~
24
+
25
+
26
+
27
+ 訂正:これは[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/)もご参考に。
24
28
 
25
29
 
26
30
 

1

refinement

2021/03/16 15:32

投稿

yohhoy
yohhoy

スコア6191

test CHANGED
@@ -14,11 +14,13 @@
14
14
 
15
15
 
16
16
 
17
+ ----
18
+
17
19
  > 記法をはじめとして、このコードに対する指摘・アドバイス
18
20
 
19
21
 
20
22
 
21
- `main`関数が意図通りに実装されていません。質問中にあるコードでは「`function::measure`クラスに値`function::able`を指定して一時オブジェクトを構築し、同一行内でそのオブジェクトを破棄」してしまいます。つまりコード区間の時間計測として機能しま
23
+ `main`関数が意図通りに実装されていません。質問中にあるコードでは「`function::measure`クラスに値`function::able`を指定して一時オブジェクトを構築し、同一行内でそのオブジェクトを破棄」してしまいます。つまりコード区間の時間計測としては全く機能せず、常に`0 ms`と出力されるはずです
22
24
 
23
25
 
24
26
 
@@ -44,11 +46,11 @@
44
46
 
45
47
  int main() {
46
48
 
47
- function::measure span(function::able);
49
+ function::measure span(function::able); // オブジェクト作成=計測開始
48
50
 
49
51
  // (計測対象の処理)
50
52
 
51
- } // ここでspanオブジェクトが破棄される
53
+ } // ここでオブジェクトが破棄される=計測終了
52
54
 
53
55
  ```
54
56