2013-04-02

is_explicitly_convertibleが消された理由

Fixing is_constructible and is_explicitly_convertible

2010年のドラフトにあったis_explicitly_convertibleは、is_constructibleと完全に等しいということで、消された。

つまり、static_cast<T>(e) ;が可能かどうかと、T t(e) ;が可能かどうかは、全く同じだという事だ。

3 comments:

SubaruG said...

// つまり、static_cast(e) ;が可能かどうかと、T t(e) ;が可能かどうかは、全く同じ

ちょっと考えただけでも

void* const p = new double();
static_cast(p); // valid

とかある件について

SubaruG said...

<int*> がタグ扱いされて無視された….
static_cast<int*>(p) です

SubaruG said...

直接関係あるかは微妙ですが
auto y = T(x);

auto y = reinterpret_cast<T>(x);
と殆ど同じで危険,というのは見落としやすい点ですね.