我想基于布尔模板参数实现一个私有函数.像这样的东西:
#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++ 代码。然后编译该代码并作为动态库加载。我使用这种技术为数据库模式和查询构建高效的代码。
目前,我正在使用简单的文件写入来生成代码(这对于概念验证实现来说是可以的)。现在,我正在寻找一种更优雅但相当灵活的解决方案来生成 C++ 代码。
我搜索了很多,但到目前为止我发现的所有解决方案都相当复杂/广泛,不够高效,或者不够灵活。
您在 C++ 项目中使用哪些库来生成代码?
最好的,莫里茨
有人可以告诉我,我如何获得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 …