我需要将编译脚本中的一些信息传递到Template Haskell中。目前,编译脚本将信息存储在系统环境中,因此我只需使用runIO包装的System.Environment.getEnvironment来读取它。是否有更好的方法,例如传递一些参数给ghc(类似于C预处理器的-D...),或者...
我有一个作为std :: map实现的符号表。对于值,没有办法通过默认构造函数合法地构造值类型的实例。但是,如果我不提供默认构造函数,我会得到编译器错误,如果我使构造函数断言,我的程序就可以成功编译,但如果我尝试使用它添加新成员,它就会在map :: operator[]内部崩溃。有没有办法让...
考虑一个非常简单但冗长的函数,例如:int foo(int a, int b, int c, int d) { return 1; } // using ReturnTypeOfFoo = ??? 如何在编译时最简单、最简洁地确定函数的返回类型(在此示例中为int,名称为Return...
我有一个C库(包含C头文件),存在两个不同的版本。 其中一个版本有一个函数,看起来像这样:int test(char * a, char * b, char * c, bool d, int e); 另一个版本看起来像这样:int test(char * a, char * b, char *...
我希望在编译时使用类型名称。例如,假设我已经写了以下代码: constexpr size_t my_strlen(const char* s) { const char* cp = s; while(*cp != '\0') { cp++; }; ...
我正在将我的C++应用程序的一部分从旧的C类型数组更改为模板化的C++容器类。详见这个问题。虽然解决方案运行得非常好,但对模板代码进行微小更改会导致大量重新编译,并且会极大地减慢构建时间。有没有办法将模板代码从头文件中移出并放回到cpp文件中,使得实现细节的微小变化不会导致重建?
考虑:static constexpr unsigned num_points{ 7810 }; std::array< double, num_points > axis; for (int i = 0; i < num_points; ++i) { axis[i...
考虑以下代码: #include <functional> #include <typeinfo> template <typename T> inline constexpr const void *foo = &typeid(T); int...
在c++11中,是否有一种标准方法可以让我在无符号索引上进行编译时类型选择? 例如: using type_0 = static_switch<0, T, U>; // yields type T using type_1 = static_switch<1, T, U...
在C++11中,是否有可能根据一个表达式是否为常量表达式(即constexpr),生成编译时布尔值?一些stackoverflow上的问题涉及到这个问题,但我没有看到直接的答案。