[英]C++ template with static_assert error
與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__) */
您正在將類型名稱傳遞給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>()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.