blob: d6bba88bf5b8d0a56aa98a7fc8e0b9dbcb78f650 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#pragma once
namespace floormat::detail_type_traits {
namespace { template<class T> class IsComplete_ {
// from <Corrade/Containers/Pointer.h>
template<class U> static char get(U*, decltype(sizeof(U))* = nullptr);
static short get(...);
public:
enum: bool { value = sizeof(get(static_cast<T*>(nullptr))) == sizeof(char) };
}; } // namespace
} // namespace floormat::detail_type_traits
namespace floormat {
template<typename T>
constexpr inline bool is_complete =
bool(::floormat::detail_type_traits::IsComplete_<T>::value);
} // namespace floormat
|