<commit_before>#pragma once

#include "StackAllocator.hpp"
#include "ThreadSafeStack.hpp"

namespace AO
{
	namespace Allocator
	{
		inline namespace Version_1
		{
			template <class Type, std::size_t Capacity = 256, class Enable = typename std::enable_if<!std::is_same<Type, void>::value && Capacity != 0>::type>
			class ThreadSafeStackAllocator : public StackAllocator<Type, Capacity>
			{
				// Friendships
				template <class OtherType, std::size_t OtherCapacity, class OtherEnable>
				friend class ThreadSafeStackAllocator;

				template <class OtherType, std::size_t OtherCapacity, class OtherEnable>
				friend class StackAllocator;

			public:
				// Type Aliases
				using StackType = ThreadSafeStack<sizeof(Type) * Capacity>;

				using value_type = Type;

				using pointer = Type *;

				using const_pointer = Type const *;

				using reference = Type &;

				using const_reference = Type const &;

				using size_type = std::size_t;

				using difference_type = std::ptrdiff_t;

				template <class OtherType>
				struct rebind
				{
					using other = ThreadSafeStackAllocator<OtherType, Capacity>;
				};

				// Constructors
				ThreadSafeStackAllocator(void);

				ThreadSafeStackAllocator(ThreadSafeStackAllocator const &) noexcept = default;

				ThreadSafeStackAllocator(ThreadSafeStackAllocator &&) noexcept = default;

				template <class OtherType, std::size_t OtherSize>
				ThreadSafeStackAllocator(ThreadSafeStackAllocator<OtherType, OtherSize> const &other) noexcept;

				template <class OtherType, std::size_t OtherSize>
				ThreadSafeStackAllocator(ThreadSafeStackAllocator<OtherType, OtherSize> &&other) noexcept;

				// Assignment Operators
				ThreadSafeStackAllocator &operator=(ThreadSafeStackAllocator const &) noexcept = default;

				ThreadSafeStackAllocator &operator=(ThreadSafeStackAllocator &&) noexcept = default;

				template <class OtherType, std::size_t OtherSize>
				ThreadSafeStackAllocator &operator=(ThreadSafeStackAllocator<OtherType, OtherSize> const &other) noexcept;

				template <class OtherType, std::size_t OtherSize><commit_msg>Update ThreadSafeStackAllocator.hpp<commit_after>#pragma once

#include "StackAllocator.hpp"
#include "ThreadSafeStack.hpp"

namespace AO
{
	namespace Allocator
	{
		inline namespace Version_1
		{
			template <class Type, std::size_t Capacity = 256, class Enable = typename std::enable_if<!std::is_same<Type, void>::value && Capacity != 0>::type>
			class ThreadSafeStackAllocator : public StackAllocator<Type, Capacity>
			{
				// Friendships
				template <class OtherType, std::size_t OtherCapacity, class OtherEnable>
				friend class ThreadSafeStackAllocator;

				template <class OtherType, std::size_t OtherCapacity, class OtherEnable>
				friend class StackAllocator;

			public:
				// Type Aliases
				using StackType = ThreadSafeStack<sizeof(Type) * Capacity>;

				using value_type = Type;

				using pointer = Type *;

				using const_pointer = Type const *;

				using reference = Type &;

				using const_reference = Type const &;

				using size_type = std::size_t;

				using difference_type = std::ptrdiff_t;

				template <class OtherType>
				struct rebind
				{
					using other = ThreadSafeStackAllocator<OtherType, Capacity>;
				};

				// Constructors
				ThreadSafeStackAllocator(void);

				template <class OtherType, std::size_t OtherSize>
				ThreadSafeStackAllocator(ThreadSafeStackAllocator<OtherType, OtherSize> const &other) noexcept;

				template <class OtherType, std::size_t OtherSize>
				ThreadSafeStackAllocator(ThreadSafeStackAllocator<OtherType, OtherSize> &&other) noexcept;

				// Assignment Operators
				template <class OtherType, std::size_t OtherSize>
				ThreadSafeStackAllocator &operator=(ThreadSafeStackAllocator<OtherType, OtherSize> const &other) noexcept;

				template <class OtherType, std::size_t OtherSize>
{'fraction_non_alphanumeric': 0.08735095904613789, 'fraction_numerical': 0.002592016588906169, 'mean_word_length': 4.617176128093159, 'pattern_counts': {'":': 0, '<': 35, '<?xml version=': 0, '>': 35, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6987790', 'n_tokens_mistral': 1337, 'n_tokens_neox': 1080, 'n_words': 276}