<commit_before>
#ifndef LASERCAKE_CXX11_UTILS_HPP__
#define LASERCAKE_CXX11_UTILS_HPP__

#ifndef USE_BOOST_CXX11_LIBS
#include <utility>
using std::move;
using std::forward;
using std::declval;

#else

#include <boost/utility/declval.hpp>
#include <boost/type_traits/remove_reference.hpp>
#include <boost/type_traits/is_lvalue_reference.hpp>

namespace cxx11_utils_impl {
using boost::remove_reference;
using boost::is_lvalue_reference;
template<typename T>
constexpr T&& forward(typename remove_reference<T>::type& t) noexcept
{ return static_cast<T&&>(t); }
template<typename T>
constexpr T&& forward(typename remove_reference<T>::type&& t) noexcept
{ static_assert(!is_lvalue_reference<T>::value, "incorrectly lvalue ref");
  return static_cast<T&&>(t); }
template<typename T>
constexpr typename remove_reference<T>::type&& move(T&& t) noexcept
{ return static_cast<typename remove_reference<T>::type&&>(t); }
}
using cxx11_utils_impl::forward;
using cxx11_utils_impl::move;
using boost::declval;

#endif

#endif<commit_msg>Try to fix OS X USE_BOOST_CXX11_LIBS build<commit_after>
#ifndef LASERCAKE_CXX11_UTILS_HPP__
#define LASERCAKE_CXX11_UTILS_HPP__

#ifndef USE_BOOST_CXX11_LIBS
#include <utility>
using std::move;
using std::forward;
using std::declval;

#else

#include <boost/utility/declval.hpp>
#include <boost/type_traits/remove_reference.hpp>
#include <boost/type_traits/is_lvalue_reference.hpp>

namespace cxx11_utils_impl {
using boost::remove_reference;
using boost::is_lvalue_reference;
template<typename T>
constexpr T&& forward(typename remove_reference<T>::type& t) noexcept
{ return static_cast<T&&>(t); }
template<typename T>
constexpr T&& forward(typename remove_reference<T>::type&& t) noexcept
{ static_assert(!is_lvalue_reference<T>::value, "incorrectly lvalue ref");
  return static_cast<T&&>(t); }
template<typename T>
constexpr typename remove_reference<T>::type&& move(T&& t) noexcept
{ return static_cast<typename remove_reference<T>::type&&>(t); }
}
using cxx11_utils_impl::forward;
using cxx11_utils_impl::move;
using boost::declval;

// Some Boost headers do "using std::move;".
// The below puts our impls in the std namespace accessible iff
// there isn't anything already in std called 'move', 'forward'.
namespace std {
  using namespace cxx11_utils_impl;
}

#endif

#endif
{'fraction_non_alphanumeric': 0.1245674740484429, 'fraction_numerical': 0.012110726643598616, 'mean_word_length': 8.479508196721312, 'pattern_counts': {'":': 0, '<': 33, '<?xml version=': 0, '>': 33, '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': '4187544', 'n_tokens_mistral': 830, 'n_tokens_neox': 792, 'n_words': 178}