summaryrefslogtreecommitdiff
path: root/asl/object.hpp
blob: e45376de34c59840beaeb800e3a7b94e89b77c0f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#pragma once

#include "asl/ptr.hpp"

namespace asl {

template<typename T>
class object final
{
    using wrapped = devoid_t<un_qual_t<typename ptr<T>::pointee>>;

    ASL_NO_UNIQUE_ADDRESS wrapped m_value;
    
public:
    object() requires default_constructible<wrapped> = default;

    object(const object&) = default;
    object(object&&) = default;

    object& operator=(const object&) = default;
    object& operator=(object&&) = default;

    ~object() = default;
};

} // namespace asl