static-assert

    5热度

    3回答

    我想写一个模板函数,只能用于2个数字(例如3和5),并给出错误,如果你尝试使用它与另一个数字。 我可以这样做: template<int x> void f(); template<> void f<3>() { cout << "f<3>()\n"; } template<> void f<5>() { cout << "f<5>()\n"; }

    0热度

    2回答

    int main(int argc, char **argv) { static_assert(false, R"error(This is an error message. You need to 1. Pick up the phone. 2. Call GhostBusters. 3. Run and hide. )error"); } 给 error: sta

    0热度

    1回答

    我们假设我想写返回指针非空容器的第一个元素的函数。 // REQUIRES: c not empty template<typename C> auto pointer_to_first(C& c) -> decltype(&(*c.begin())){ return nullptr; // TODO: implement } 如果我尝试使用vector<bool> vecto

    3热度

    1回答

    我想要做的是将一些类继承为extention类。事情是extention类必须知道它正在扩展的类。 这可以简单地实现这样的: template<typename Self> class Extention { public: void check() const { std::cout << "Extention is valid: "

    19热度

    3回答

    我想禁止对易失性类型的特定操作。要做到这一点,我试图用std::is_volatile,但下面的代码编译没有错误,这不是我想要的。 为什么is_volatile::valuefalse在下面的情况下? #include <type_traits> template<typename T> inline void DoStuff(T val) { static_assert(!std

    0热度

    1回答

    我有这样的源代码,有一个枚举,我希望可以评估为constexpr,但编译器给我一个错误,它不是。为什么? 如果EventOrder是enum或enum class,则无关紧要。 #include <limits> #include <type_traits> enum class EventOrder { Last = 1'000'000, Default = 0,

    4热度

    3回答

    在下面的示例中main可以static_assert如果字符串文字以'v'开头,但verify不能。 为什么会发生?有没有一种方法允许verify到static_assert条件字符串中的字符? #include <cstddef> template <std::size_t N> constexpr char get_first(const char (&str)[N]) {

    -1热度

    1回答

    我有我的WPF应用程序的文件读/写机制。我正在根据文件中的“帐户类型”字段读取文件(100,000)记录和分组。 每个帐户类型都有单独的输出文件。 我正在这样做的线程通信更好的输出文件写入。 现在我的问题是假设如果用户取消从WPF按钮写文件。我正在中止特定的线程。 但仍然文件写入机制是中止线程后发生。 有没有什么办法阻止写入文件一旦被用户

    0热度

    2回答

    自大学以来没有使用C++后,我试图使用具有两种类型的子对象的向量,而且我显然得到了一些错误。 最初我使用了一个可以工作的指针向量,但是如果我理解正确,那么在清除时会泄漏内存。 我得到的错误导致我相信它与类中的静态计数器有关(与最后一个成员一起销毁?),但删除并没有解决它。 错误会导致在此,在stl_construct.h: #if __cplusplus >= 201103L // A

    1热度

    2回答

    我试图比较一个constexpr-if语句中的函数参数。 下面是一个简单的例子: constexpr bool test_int(const int i) { if constexpr(i == 5) { return true; } else { return false; } } 然而,当我用下面的标志编译这个海湾合作委员会7: g++-7 -std=c++1z test.c