本文介绍了在函数声明和定义中使用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说明符?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-27 18:20