Skip to content

Commit 8f9d2bc

Browse files
committed
is_destructible : C++14対応として、不十分だった仕様を補完。
1 parent a89c8da commit 8f9d2bc

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

reference/type_traits/is_destructible.md

+11-2
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,13 @@ namespace std {
1515
1616
1717
##効果
18+
`is_destructible`は、型`T`が破棄可能であるならば[`true_type`](./integral_constant-true_type-false_type.md)から派生し、そうでなければ[`false_type`](./integral_constant-true_type-false_type.md)から派生する。
1819
19-
`is_destructible`は、型`T`が破棄可能であるならば[`true_type`](./integral_constant-true_type-false_type.md)から派生し、そうでなければ[`false_type`](./integral_constant-true_type-false_type.md)から派生する。
20-
型`T`が完全型で `template <class U> struct test { U u; };` があるときに `test<T>::~test()` が`delete`宣言されていなければ、型`T`は破棄可能であると判断される。
20+
- C++11 : 型`T`が完全型で `template <class U> struct test { U u; };` があるときに `test<T>::~test()` が`delete`宣言されていなければ、型`T`は破棄可能であると判断される。
21+
- C++14 : 実行時に評価されない文脈で、オブジェクト型`T`に対する式[`std::declval`](/reference/utility/declval.md)`<T&>().~T()`が有効であれば破棄可能、そうでなければ破棄できないと判断される。以下、オブジェクト型に含まれない型の場合の判断について記載する:
22+
- `T`が`void`の場合は破棄できない
23+
- `T`が参照型の場合は破棄可能
24+
- `T`が関数型の場合は破棄できない
2125
2226
2327
##例
@@ -77,3 +81,8 @@ static_assert(std::is_destructible<int[]>::value == false, "int[] is not destruc
7781
1 error generated.
7882
```
7983
revision 188080以降のClang 3.4ならばエラーが出ない。
84+
85+
86+
##参照
87+
- [LWG Issue 2049. `is_destructible` is underspecified](http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2049)
88+

0 commit comments

Comments
 (0)