mirror of
https://github.com/microsoft/GSL.git
synced 2024-11-03 17:56:43 -05:00
parent
fbe867a9c4
commit
2fc94db3eb
@ -72,7 +72,7 @@ public:
|
|||||||
static_assert(std::is_assignable<T&, std::nullptr_t>::value, "T cannot be assigned nullptr.");
|
static_assert(std::is_assignable<T&, std::nullptr_t>::value, "T cannot be assigned nullptr.");
|
||||||
|
|
||||||
template <typename U, typename = std::enable_if_t<std::is_convertible<U, T>::value>>
|
template <typename U, typename = std::enable_if_t<std::is_convertible<U, T>::value>>
|
||||||
constexpr not_null(U&& u) : ptr_(std::forward<U>(u))
|
constexpr explicit not_null(U&& u) : ptr_(std::forward<U>(u))
|
||||||
{
|
{
|
||||||
Expects(ptr_ != nullptr);
|
Expects(ptr_ != nullptr);
|
||||||
}
|
}
|
||||||
|
@ -178,10 +178,10 @@ TEST_CASE("TestNotNullCasting")
|
|||||||
MyBase base;
|
MyBase base;
|
||||||
MyDerived derived;
|
MyDerived derived;
|
||||||
Unrelated unrelated;
|
Unrelated unrelated;
|
||||||
not_null<Unrelated*> u = &unrelated;
|
not_null<Unrelated*> u{&unrelated};
|
||||||
(void) u;
|
(void) u;
|
||||||
not_null<MyDerived*> p = &derived;
|
not_null<MyDerived*> p{&derived};
|
||||||
not_null<MyBase*> q = &base;
|
not_null<MyBase*> q(&base);
|
||||||
q = p; // allowed with heterogeneous copy ctor
|
q = p; // allowed with heterogeneous copy ctor
|
||||||
CHECK(q == p);
|
CHECK(q == p);
|
||||||
|
|
||||||
@ -192,18 +192,18 @@ TEST_CASE("TestNotNullCasting")
|
|||||||
not_null<Unrelated*> r = p;
|
not_null<Unrelated*> r = p;
|
||||||
not_null<Unrelated*> s = reinterpret_cast<Unrelated*>(p);
|
not_null<Unrelated*> s = reinterpret_cast<Unrelated*>(p);
|
||||||
#endif
|
#endif
|
||||||
not_null<Unrelated*> t = reinterpret_cast<Unrelated*>(p.get());
|
not_null<Unrelated*> t(reinterpret_cast<Unrelated*>(p.get()));
|
||||||
CHECK(reinterpret_cast<void*>(p.get()) == reinterpret_cast<void*>(t.get()));
|
CHECK(reinterpret_cast<void*>(p.get()) == reinterpret_cast<void*>(t.get()));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_CASE("TestNotNullAssignment")
|
TEST_CASE("TestNotNullAssignment")
|
||||||
{
|
{
|
||||||
int i = 12;
|
int i = 12;
|
||||||
not_null<int*> p = &i;
|
not_null<int*> p(&i);
|
||||||
CHECK(helper(p));
|
CHECK(helper(p));
|
||||||
|
|
||||||
int* q = nullptr;
|
int* q = nullptr;
|
||||||
CHECK_THROWS_AS(p = q, fail_fast);
|
CHECK_THROWS_AS(p = not_null<int*>(q), fail_fast);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_CASE("TestNotNullRawPointerComparison")
|
TEST_CASE("TestNotNullRawPointerComparison")
|
||||||
|
Loading…
Reference in New Issue
Block a user