Program Listing for File a::static_test.hpp

Return to documentation for file (include/uitsl/meta/a::static_test.hpp)

#pragma once
#ifndef UITSL_META_A__STATIC_TEST_HPP_INCLUDE
#define UITSL_META_A__STATIC_TEST_HPP_INCLUDE

#include <type_traits>

#define uitsl_a_message "T is neither copy nor move constructible"

namespace uitsl {
namespace a { // any type

template<typename T>
struct StaticTest {

  static constexpr bool value = (
    std::is_copy_constructible<T>::value
    || std::is_move_constructible<T>::value
  );

};

template<typename T>
constexpr bool static_test() { return StaticTest<T>::value; }

} // namespace a
} // namespace uitsl

#endif // #ifndef UITSL_META_A__STATIC_TEST_HPP_INCLUDE