diff options
Diffstat (limited to 'include/unique_array.hpp')
-rw-r--r-- | include/unique_array.hpp | 68 |
1 files changed, 0 insertions, 68 deletions
diff --git a/include/unique_array.hpp b/include/unique_array.hpp deleted file mode 100644 index a7e0731..0000000 --- a/include/unique_array.hpp +++ /dev/null @@ -1,68 +0,0 @@ -/* - * libfud - * Copyright 2024 Dominick Allen - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef FUD_UNIQUE_ARRAY_HPP -#define FUD_UNIQUE_ARRAY_HPP - -#include "array.hpp" -#include "fud_type_traits.hpp" - -#include <cstdlib> -#include <utility> - -namespace fud { - -template <class T, T... Vs> -class UniqueArray { // NOLINT(cppcoreguidelines-special-member-functions) - public: - // NOLINTBEGIN(cppcoreguidelines-avoid-const-or-ref-data-members) - const Array<T, sizeof...(Vs)> m_values{}; - // NOLINTEND(cppcoreguidelines-avoid-const-or-ref-data-members) - - ~UniqueArray() = default; - - constexpr UniqueArray() : m_values{{Vs...}} - { - static_assert(sizeof...(Vs) < 2 || !hasDuplicates<T, Vs...>()); - } - - constexpr UniqueArray(const UniqueArray& rhs) : m_values(rhs.m_values) - { - static_assert(sizeof...(Vs) < 2 || !hasDuplicates<T, Vs...>()); - } - - constexpr UniqueArray(UniqueArray&& rhs) noexcept : m_values(std::move(rhs).m_values) - { - static_assert(sizeof...(Vs) < 2 || !hasDuplicates<T, Vs...>()); - } - - [[nodiscard]] constexpr size_t size() const - { - return sizeof...(Vs); - } -}; - -template <typename T=size_t, T... Is> -constexpr UniqueArray<T, Is...> makeStaticIndexSet(std::integer_sequence<T, Is...> /*unused*/) -{ - static_assert(sizeof...(Is) > 0); - return UniqueArray<T, Is...>{}; -} - -} // namespace fud - -#endif |