带有static_assert错误的C ++模板

时间:2014-03-19 18:58:38

标签: c++

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__) */

1 个答案:

答案 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>()