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

回答編集履歴

6

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

2021/08/25 13:01

投稿

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

5

fix typo

2021/08/25 13:01

投稿

退会済みユーザー
answer CHANGED
@@ -2,6 +2,4 @@
2
2
  Rustは、C++にはあるSFINAE(参考:[https://cpprefjp.github.io/lang/cpp11/sfinae_expressions.html](https://cpprefjp.github.io/lang/cpp11/sfinae_expressions.html))がなく、ジェネリック境界を適切に定義する必要があります.
3
3
  関数本体のブロックの中は境界にならない(それはもはやSFINAEです)ので、代わりに`where [(); N/2]`と書くことで、`[(); N/2]`、ひいては`[i32; N/2]`等が有効な型であることを境界条件としているのでしょう.
4
4
 
5
- 参考:[Const well-formedness and const equality](https://hackmd.io/OZG_XiLFRs2Xmw5s39jRzA?view)
5
+ 参考:[Const well-formedness and const equality](https://hackmd.io/OZG_XiLFRs2Xmw5s39jRzA?view)
6
-
7
- nightly

4

Nの型を明示

2021/08/25 09:20

投稿

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

3

URLをリンクにした

2021/08/25 09:18

投稿

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

2

URLをリンクにした

2021/08/25 09:15

投稿

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

1

URLをリンクにした

2021/08/25 09:15

投稿

退会済みユーザー
answer CHANGED
@@ -2,4 +2,4 @@
2
2
  RustはC++と違って、SFINAE(参考:https://cpprefjp.github.io/lang/cpp11/sfinae_expressions.html)がなく、ジェネリック境界を適切に定義する必要があります.
3
3
  関数本体のブロックは境界にならない(それはもはやSFINAEです)ので、代わりに`where [(); N/2]`と書くことで、`[(); N/2]`、ひいては`[i32; N/2]`等が有効な型であることを境界条件としているのでしょう.
4
4
 
5
- 参考:https://hackmd.io/OZG_XiLFRs2Xmw5s39jRzA?view
5
+ 参考:[Const well-formedness and const equality](https://hackmd.io/OZG_XiLFRs2Xmw5s39jRzA?view)