summaryrefslogtreecommitdiffhomepage
path: root/compat/is-complete.hpp
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