static_assert符合错误:预期"("用于函数式转换或类型构造
#ifndef __L2P__Factory__
#define __L2P__Factory__
#include <iostream>
#include <type_traits>
#include "Initable.h"
namespace l2 {
namespace utils {
template <typename OBJECT, typename CTX>
class Factory {
static_assert(std::is_base_of<Initable<CTX>, OBJECT>, "Factory object should implement Initable protocol");
public:
OBJECT * create(CTX ctx);
};
}
}
#endif /* defined(__L2P__Factory__) */
答案 0 :(得分:2)
您将类型名称传递给static_assert。您需要bool
表达式或与之交谈的内容。这些是你的选择:
std::is_base_of<Initable<CTX>, OBJECT>::value
std::is_base_of<Initable<CTX>, OBJECT>{}
std::is_base_of<Initable<CTX>, OBJECT>()