回答編集履歴

6

余計なSFINAEに対する言及を削除

2021/08/25 13:01

投稿

退会済みユーザー
test CHANGED
@@ -1,8 +1,8 @@
1
1
  `N/2`であれば、任意の`N: usize`でコンパイルエラーにならないことが(少なくとも人間には)わかりますが、例えば`[0; N-1]`の場合、`N = 0`とするとコンパイルできませんよね.
2
2
 
3
- RustはC++にはあるSFINAE参考:[https://cpprefjp.github.io/lang/cpp11/sfinae_expressions.html](https://cpprefjp.github.io/lang/cpp11/sfinae_expressions.html))が、ジェネリック境界を適切に定義する必要があります.
3
+ RustはC++(17以前としておきます)のtemplateとは異、ジェネリック境界を適切に定義する必要があります.
4
4
 
5
- 関数本体のブロックの中は境界にならない(それはもはやSFINAEです)ので、代わりに`where [(); N/2]`と書くことで、`[(); N/2]`、ひいては`[i32; N/2]`等が有効な型であることを境界条件としているのでしょう.
5
+ 関数本体のブロックの中は境界にならないので、代わりに`where [(); N/2]`と書くことで、`[(); N/2]`、ひいては`[i32; N/2]`等が有効な型であることを境界条件としているのでしょう.
6
6
 
7
7
 
8
8
 

5

fix typo

2021/08/25 13:01

投稿

退会済みユーザー
test CHANGED
@@ -7,7 +7,3 @@
7
7
 
8
8
 
9
9
  参考:[Const well-formedness and const equality](https://hackmd.io/OZG_XiLFRs2Xmw5s39jRzA?view)
10
-
11
-
12
-
13
- nightly

4

Nの型を明示

2021/08/25 09:20

投稿

退会済みユーザー
test CHANGED
@@ -1,4 +1,4 @@
1
- `N/2`であれば、任意の`N`でコンパイルエラーにならないことが(少なくとも人間には)わかりますが、例えば`[0; N-1]`の場合、`N=0`とするとコンパイルできませんよね.
1
+ `N/2`であれば、任意の`N: usize`でコンパイルエラーにならないことが(少なくとも人間には)わかりますが、例えば`[0; N-1]`の場合、`N = 0`とするとコンパイルできませんよね.
2
2
 
3
3
  Rustは、C++にはあるSFINAE(参考:[https://cpprefjp.github.io/lang/cpp11/sfinae_expressions.html](https://cpprefjp.github.io/lang/cpp11/sfinae_expressions.html))がなく、ジェネリック境界を適切に定義する必要があります.
4
4
 
@@ -7,3 +7,7 @@
7
7
 
8
8
 
9
9
  参考:[Const well-formedness and const equality](https://hackmd.io/OZG_XiLFRs2Xmw5s39jRzA?view)
10
+
11
+
12
+
13
+ nightly

3

URLをリンクにした

2021/08/25 09:18

投稿

退会済みユーザー
test CHANGED
@@ -1,8 +1,8 @@
1
1
  `N/2`であれば、任意の`N`でコンパイルエラーにならないことが(少なくとも人間には)わかりますが、例えば`[0; N-1]`の場合、`N=0`とするとコンパイルできませんよね.
2
2
 
3
- RustはC++と違って、SFINAE(参考:https://cpprefjp.github.io/lang/cpp11/sfinae_expressions.html)がなく、ジェネリック境界を適切に定義する必要があります.
3
+ RustはC++にはあるSFINAE(参考:[https://cpprefjp.github.io/lang/cpp11/sfinae_expressions.html](https://cpprefjp.github.io/lang/cpp11/sfinae_expressions.html))がなく、ジェネリック境界を適切に定義する必要があります.
4
4
 
5
- 関数本体のブロックは境界にならない(それはもはやSFINAEです)ので、代わりに`where [(); N/2]`と書くことで、`[(); N/2]`、ひいては`[i32; N/2]`等が有効な型であることを境界条件としているのでしょう.
5
+ 関数本体のブロックの中は境界にならない(それはもはやSFINAEです)ので、代わりに`where [(); N/2]`と書くことで、`[(); N/2]`、ひいては`[i32; N/2]`等が有効な型であることを境界条件としているのでしょう.
6
6
 
7
7
 
8
8
 

2

URLをリンクにした

2021/08/25 09:15

投稿

退会済みユーザー
test CHANGED
File without changes

1

URLをリンクにした

2021/08/25 09:15

投稿

退会済みユーザー
test CHANGED
@@ -6,4 +6,4 @@
6
6
 
7
7
 
8
8
 
9
- 参考:https://hackmd.io/OZG_XiLFRs2Xmw5s39jRzA?view
9
+ 参考:[Const well-formedness and const equality](https://hackmd.io/OZG_XiLFRs2Xmw5s39jRzA?view)