<commit_before>#ifndef IV_NONCOPYABLE_H_
#define IV_NONCOPYABLE_H_

namespace iv {
namespace core {

// guard from ADL
// see http://ml.tietew.jp/cppll/cppll_novice/thread_articles/1652
namespace noncopyable_ {

template<class T = void>
class Noncopyable {
 protected:
  Noncopyable() {}
  ~Noncopyable() {}

 private:
  Noncopyable(const Noncopyable&);
  const T& operator=(const T&);
};

template<>
class Noncopyable<void> {
 protected:
  Noncopyable() {}
  ~Noncopyable() {}

 private:
  Noncopyable(const Noncopyable&);
  void operator=(const Noncopyable&);
};



}  // namespace iv::core::noncopyable_

using noncopyable_::Noncopyable;

} }  // namespace iv::core
#endif  // IV_NONCOPYABLE_H_
<commit_msg>Use C++11 styled noncopyable<commit_after>#ifndef IV_NONCOPYABLE_H_
#define IV_NONCOPYABLE_H_

namespace iv {
namespace core {

#define IV_NONCOPYABLE(name)\
    name(const name&) = delete;\
    name& operator=(const name&) = delete;

// guard from ADL
// see http://ml.tietew.jp/cppll/cppll_novice/thread_articles/1652
namespace noncopyable_ {

template<class T = void>
class Noncopyable {
 public:
  Noncopyable() = default;
  Noncopyable(const Noncopyable&) = delete;
  const Noncopyable& operator=(const Noncopyable&) = delete;
};

}  // namespace iv::core::noncopyable_

using noncopyable_::Noncopyable;

} }  // namespace iv::core
#endif  // IV_NONCOPYABLE_H_

{'fraction_non_alphanumeric': 0.12790697674418605, 'fraction_numerical': 0.007267441860465116, 'mean_word_length': 4.785714285714286, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, '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': '5127170', 'n_tokens_mistral': 510, 'n_tokens_neox': 485, 'n_words': 101}