本文介绍了在函数声明和定义中使用noexcept说明符?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
考虑以下功能:
// Declaration in the .h file
class MyClass
{
template <class T> void function(T&& x) const;
};
// Definition in the .cpp file
template <class T> void MyClass::function(T&& x) const;
如果类型T
是不可构造的,我想使此函数为noexcept
.
I want to make this function noexcept
if the type T
is nothrow constructible.
该怎么做? (我的意思是语法?)
How to do that ? (I mean what is the syntax ?)
推荐答案
像这样:
#include <type_traits>
// Declaration in the .h file
class MyClass
{
public:
template <class T> void function(T&& x) noexcept(std::is_nothrow_constructible<T>::value);
};
// Definition in the .cpp file
template <class T> void MyClass::function(T&& x) noexcept(std::is_nothrow_constructible<T>::value);
但是也请参见为什么只能在头文件中实现模板?.您(通常)不能在源文件中实现模板.
But please also see Why can templates only be implemented in the header file?. You (generally) cannot implement a template in the source file.
这篇关于在函数声明和定义中使用noexcept说明符?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!