Commit 7a9a42b6 authored by Dominik Charousset's avatar Dominik Charousset

Static assertion for announce(); close #284

parent 307bec1a
......@@ -31,6 +31,7 @@
#include "caf/detail/abstract_uniform_type_info.hpp"
#include "caf/detail/safe_equal.hpp"
#include "caf/detail/type_traits.hpp"
#include "caf/detail/default_uniform_type_info.hpp"
namespace caf {
......@@ -135,6 +136,9 @@ compound_member(const std::pair<GRes (Parent::*)() const,
*/
template <class T, class... Ts>
inline const uniform_type_info* announce(std::string tname, const Ts&... xs) {
static_assert(std::is_pod<T>::value || std::is_empty<T>::value
|| detail::is_comparable<T, T>::value,
"T is neither a POD, nor empty, nor comparable with '=='");
auto ptr = new detail::default_uniform_type_info<T>(std::move(tname), xs...);
return announce(typeid(T), uniform_type_info_ptr{ptr});
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment