簡體   English   中英

帶有static_assert錯誤的C ++模板

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM