c_cpp C ++模板强制使用函数返回值。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp C ++模板强制使用函数返回值。相关的知识,希望对你有一定的参考价值。

// If it is important that a return value not be ignored by the caller of a function,
// the template dont_ignore may be used as follows:
// BEFORE:
// int add( int x, int y )
// {
//     return x + y;
// }
// AFTER:
// dont_ignore<int> add( int x, int y )
// {
//     return x + y;
// }
//
// When the caller of the function does not use the return value,
// an exception is thrown. Definition of dont_ignore:

template<class T>
struct dont_ignore
{
    const T     v;
    bool        used;

    dont_ignore( const T& v )
        :  v( v ), used( false )
    {}

    ~dont_ignore()
    {
        if ( !used )
            throw std::runtime_error( "return value not used" );
    }

    operator T()
    {
        used = true;
        return v;
    }
};

以上是关于c_cpp C ++模板强制使用函数返回值。的主要内容,如果未能解决你的问题,请参考以下文章

使用 Bootstrap 的 Typeahead displayKey 函数返回值

右值引用,移动语义,完美转发

STL pair

c语言define用法是啥

如何使用 SFINAE 为枚举类中的缺失值制作 polyfill?

c_cpp 使用C ++ 17模板推导指南作为元函数。请参阅http://melpon.org/wandbox/permlink/lVFBj7shPP0fUMuQ