模版函数在没有实例化动作时是否会进行语法检查

只是做一个简单的记录。

/// main.cpp
#include <iostream>

template<typename T>
T add(T a, T b) {
    return a + b   //note here missing the ";"

}

int main()
{
    std::cout << "Hello World!\n";
}

在Linux GCC环境中

通过 gcc-5.2.0/bin/g++ main.cpp,直接报错:

main.cpp: In function ‘T add(T, T)’:
main.cpp:7:1: error: expected ‘;’ before ‘}’ token
}

上述的报错是预期的。

在Windows Visual Studio 2019环境中

和 是否enable /permissive (工程属性->C/C++ -> Language -> Conformance mode)有关,如果是一个c++ 工程,会默认enable /permissive; 如果是一个cuda工程中的cpp文件编译,默认是disable /permissive, 这时会直接build pass.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值