proconlib

This documentation is automatically generated by competitive-verifier/competitive-verifier

View the Project on GitHub anqooqie/proconlib

:heavy_check_mark: tests/complex.test.cpp

Depends on

Code

// competitive-verifier: STANDALONE

#include <complex>
#include <iostream>
#include <string>
#include "tools/complex.hpp"

int main() {
  std::cin.tie(nullptr);
  std::ios_base::sync_with_stdio(false);

  static_assert(tools::complex<std::complex<float>>);
  static_assert(tools::complex<std::complex<double>>);
  static_assert(tools::complex<std::complex<long double>>);

  static_assert(!tools::complex<float>);
  static_assert(!tools::complex<double>);
  static_assert(!tools::complex<long double>);

  static_assert(!tools::complex<int>);
  static_assert(!tools::complex<std::string>);

  return 0;
}
#line 1 "tests/complex.test.cpp"
// competitive-verifier: STANDALONE

#include <complex>
#include <iostream>
#include <string>
#line 1 "tools/complex.hpp"



#line 1 "tools/specialization_of.hpp"



#include <type_traits>

namespace tools {
  namespace detail {
    namespace specialization_of {
      template <typename, template <typename...> typename>
      struct trait : std::false_type {};

      template <template <typename...> typename U, typename... Args>
      struct trait<U<Args...>, U> : std::true_type {};
    }
  }

  template <typename T, template <typename...> typename U>
  concept specialization_of = tools::detail::specialization_of::trait<T, U>::value;
}


#line 6 "tools/complex.hpp"

namespace tools {
  template <typename T>
  concept complex = tools::specialization_of<T, std::complex>;
}


#line 7 "tests/complex.test.cpp"

int main() {
  std::cin.tie(nullptr);
  std::ios_base::sync_with_stdio(false);

  static_assert(tools::complex<std::complex<float>>);
  static_assert(tools::complex<std::complex<double>>);
  static_assert(tools::complex<std::complex<long double>>);

  static_assert(!tools::complex<float>);
  static_assert(!tools::complex<double>);
  static_assert(!tools::complex<long double>);

  static_assert(!tools::complex<int>);
  static_assert(!tools::complex<std::string>);

  return 0;
}
Back to top page