cpprefjpでは、std::is_assignableの効果を以下のように説明しています。
is_assignableは、型Tが型Uから代入可能であるならばtrue_typeから派生し、そうでなければfalse_typeから派生する。
declval<T>() = declval<U>()という実際には評価されない式が適格ならば代入可能であると判断される。
int& = int という式は正しい?のでstd::is_assignableはtrue_typeから派生しますが、
int = int という式は正しい?にも拘わらず、std::is_assignableはfalse_typeから派生しています。
なぜ、このような結果になるのでしょうか?
また、なぜこのような仕様になっているのでしょうか?
Cpp
1int a = 5; 2int& ra = a; // できる 3std::is_assignable<int&, int>::value; // true 4 5int b = 10; 6int bb = b; // できる 7std::is_assignable<int, int>::value; // false
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/20 16:39