小编moo*_*moo的帖子

基于布尔模板参数启用方法

我想基于布尔模板参数实现一个私有函数.像这样的东西:

#include <iostream>

using namespace std;

template <bool is_enabled = true>
class Aggregator {
public:
    void fun(int a) {
        funInternal(a);
    }

private:
    void funInternal(int a, typename std::enable_if<is_enabled>::type* = 0) {
        std::cout << "Feature is enabled!" << std::endl;
    }

    void funInternal(int a, typename std::enable_if<!is_enabled>::type* = 0) {
        std::cout << "Feature is disabled!" << std::endl;
    }
};

int main()
{
   Aggregator<true> a1;
   Aggregator<false> a2;

   a1.fun(5);
   a2.fun(5);

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是上面的程序没有编译:错误:'struct std :: enable_if'中没有名为'type'的类型void funInternal(int a,typename std :: enable_if :: type*= 0).

是否有可能通过enable_if实现所需的行为?

c++ templates enable-if

7
推荐指数
1
解决办法
4374
查看次数

C++ 代码生成的优雅方式

我目前正在从事一个与数据库相关的项目,其中生成了大量 C++ 代码。然后编译该代码并作为动态库加载。我使用这种技术为数据库模式和查询构建高效的代码。

目前,我正在使用简单的文件写入来生成代码(这对于概念验证实现来说是可以的)。现在,我正在寻找一种更优雅但相当灵活的解决方案来生成 C++ 代码。

我搜索了很多,但到目前为止我发现的所有解决方案都相当复杂/广泛,不够高效,或者不够灵活。

您在 C++ 项目中使用哪些库来生成代码?

最好的,莫里茨

c++ code-generation

6
推荐指数
1
解决办法
6010
查看次数

Boost :: variant与无序映射

有人可以告诉我,我如何获得boost :: Variant处理无序地图?

typedef boost::variant<long, string, double> lut_value;

unordered_map<lut_value, short> table;

我认为有一个用于boost :: variant的哈希函数,对吗?

编译器说:

./src/lookup/HashMap.o:在函数`std :: __ detail :: _ Hash_code_base中,std :: allocator>,double,boost :: detail :: variant :: void_,boost :: detail :: variant :: void_ ,boost :: detail :: variant :: void_,boost :: detail :: variant :: void_,boost :: detail :: variant :: void_,boost :: detail :: variant :: void_,boost :: detail: :variant :: void_,boost :: detail :: variant :: void_,boost :: detail :: variant :: void_,boost :: detail …

boost unordered-map boost-variant c++11

3
推荐指数
1
解决办法
1531
查看次数