diff --git a/asl/meta/BUILD.bazel b/asl/meta/BUILD.bazel new file mode 100644 index 0000000..f914bf3 --- /dev/null +++ b/asl/meta/BUILD.bazel @@ -0,0 +1,18 @@ +cc_library( + name = "meta", + hdrs = [ + "types.hpp", + ], + visibility = ["//visibility:public"], +) + +cc_test( + name = "types_tests", + srcs = [ + "types_tests.cpp", + ], + deps = [ + ":meta", + ], +) + diff --git a/asl/meta/types.hpp b/asl/meta/types.hpp new file mode 100644 index 0000000..b5aa192 --- /dev/null +++ b/asl/meta/types.hpp @@ -0,0 +1,14 @@ +#pragma once + +namespace asl { + +template using void_t = void; + +template +inline constexpr bool referenceable = false; + +template +inline constexpr bool referenceable> = true; + +} // namespace asl + diff --git a/asl/meta/types_tests.cpp b/asl/meta/types_tests.cpp new file mode 100644 index 0000000..cab9118 --- /dev/null +++ b/asl/meta/types_tests.cpp @@ -0,0 +1,16 @@ +#include "asl/meta/types.hpp" + +using namespace asl; + +static_assert(referenceable); +static_assert(referenceable); +static_assert(referenceable); +static_assert(!referenceable); +static_assert(referenceable); +static_assert(referenceable); +static_assert(referenceable); +static_assert(!referenceable); +static_assert(!referenceable); +static_assert(!referenceable); + +int main() { return 0; }