回答編集履歴

1

追記

2016/01/15 02:11

投稿

Chironian
Chironian

スコア23272

test CHANGED
@@ -27,3 +27,29 @@
27
27
 
28
28
 
29
29
  `sprout::math::detail::builtin_copysign(x, y)`側は分かりませんが、そうでない方は-0と+0を区別できない前提で書かれているように見えます。なので、issueが残っているのではないでしょうか?
30
+
31
+
32
+
33
+ ---
34
+
35
+ 【それはさておき】
36
+
37
+ 下記の記述にびっくり。関数テンプレートは部分特殊化できないので必要な時はクラス・テンプレートを使っていたのですが、オーバーロードとenablerを使って、部分特殊化っぽいことができるのですね。
38
+
39
+
40
+
41
+ ```C++
42
+
43
+ template<
44
+
45
+ typename FloatType,
46
+
47
+ typename sprout::enabler_if<std::is_floating_point<FloatType>::value>::type = sprout::enabler
48
+
49
+ >
50
+
51
+ inline SPROUT_CONSTEXPR FloatType
52
+
53
+ copysign(FloatType x, FloatType y)
54
+
55
+ ```