江添亮のブログ, GitHub, 本の虫@GitHub, @EzoeRyou
Fixing is_constructible and is_explicitly_convertible
2010年のドラフトにあったis_explicitly_convertibleは、is_constructibleと完全に等しいということで、消された。
つまり、static_cast<T>(e) ;が可能かどうかと、T t(e) ;が可能かどうかは、全く同じだという事だ。
// つまり、static_cast(e) ;が可能かどうかと、T t(e) ;が可能かどうかは、全く同じちょっと考えただけでもvoid* const p = new double();static_cast(p); // validとかある件について
<int*> がタグ扱いされて無視された….static_cast<int*>(p) です
直接関係あるかは微妙ですがauto y = T(x);はauto y = reinterpret_cast<T>(x);と殆ど同じで危険,というのは見落としやすい点ですね.
Post a Comment
3 comments:
// つまり、static_cast(e) ;が可能かどうかと、T t(e) ;が可能かどうかは、全く同じ
ちょっと考えただけでも
void* const p = new double();
static_cast(p); // valid
とかある件について
<int*> がタグ扱いされて無視された….
static_cast<int*>(p) です
直接関係あるかは微妙ですが
auto y = T(x);
は
auto y = reinterpret_cast<T>(x);
と殆ど同じで危険,というのは見落としやすい点ですね.
Post a Comment