c++ - VS 2013 模板不编译

标签 c++ templates

<分区>

我最近从 CB 切换到 VS(缺少 std::thread 支持) 但现在我有下一个问题,不知道如何解决,也许以前有人遇到过。

在这里

bool addTask(std::string contextName, std::string taskName)
{
    sdasdsadsaddssd
    return false;
}

是的,我们有错误。

template<typename... Args> bool addTask(std::string contextName, std::string taskName, Args... args)
{
    fdfgfdfgfggf
    return false;
}

现在我们不

========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

问题是:为什么模板会屏蔽错误?

最佳答案

模板函数不是函数。它们是模板

模板是按需实例化的。这意味着,在您要求从您的函数模板创建一个函数之前,没有函数。没有功能,没有错误。

尽管如此,由于您的示例显示了诚实的语法错误,而不是依赖于模板参数的语义错误,因此在其他编译器中 it does still cause a failed build在编译的第一阶段。 The standard doesn't require this, though , 所以 Visual Studio 没有行为不端。

关于c++ - VS 2013 模板不编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29687399/

相关文章:

c++ - 使用元组累加器减少推力

python - Django:模板中的变量中的变量

c++ - 有没有办法在 C++ 中调用 new 时获取堆栈跟踪?

c++ - hiredis SET 遇到段错误

python - 如何查看 SWIG 接口(interface)、TensorFlow 背后的 C++ 函数调用

c++ - 在 C++ 中使用友元函数

c++ - std::min/std::max 作为模板比较器

c++ - 如何从参数列表中推断出函数对象的返回类型?

c++ - Variadic 模板化构造函数不接受 x 个参数

c++ - 为什么 substr 不在定界符处停止?