回答編集履歴

1

appendix

2018/10/30 01:29

投稿

yohhoy
yohhoy

スコア6191

test CHANGED
@@ -55,3 +55,41 @@
55
55
 
56
56
 
57
57
  (あまりに技巧的な記述では可読性・保守性を損ねますから、チームメンバのスキル次第なところはあるでしょうね)
58
+
59
+
60
+
61
+ ----
62
+
63
+
64
+
65
+ > ただ、普通の関数としてはダメ。
66
+
67
+
68
+
69
+ 結合優先度の都合で、明示的な括弧が必要ですね(`foo{}(42)` → `(foo{})(42)`)。マクロを使え下記のような記述もできます。絶対におススメしませんけど。
70
+
71
+
72
+
73
+ ```C++
74
+
75
+ struct foo {
76
+
77
+ // generic version
78
+
79
+ template <class T>
80
+
81
+ T operator()(T a) { return a + a; }
82
+
83
+ // specialized version
84
+
85
+ int operator()(int a) { return a * 10; }
86
+
87
+ };
88
+
89
+
90
+
91
+ #define foo (foo{})
92
+
93
+ ```
94
+
95
+ Demo: [https://wandbox.org/permlink/Fq280pkwKeAPJV4c](https://wandbox.org/permlink/Fq280pkwKeAPJV4c)