欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Boost.Optional的用法

程序员文章站 2022-03-04 11:35:59
...

不使用boost::optional时的方法:

#include <iostream>

int aaa()
{
    int i;
    std::cin >> i;
    return (i > 10) ? i : -1;
}

int main()
{
   int i = aaa();
   if (i != -1)
       std::cout << i << std::endl;
   else
       std::cout << "not valid input" << std::endl;
}
$ g++ m.cpp && ./a.out
11
11
[[email protected] foo]$ ./a.out
2
not valid input

使用boost::optional时的方法:

#include <boost/optional.hpp>
#include <iostream>

boost::optional<int> aaa()
{
    int i;
    std::cin >> i;
    return (i > 10) ? i : boost::optional<int>{};
}

int main()
{
   boost::optional<int> i = aaa();
   if (i)
       std::cout << *i << std::endl;
   else
       std::cout << "not valid input" << std::endl;
}
$ g++ m.cpp && ./a.out
11
11
[[email protected] foo]$ ./a.out
2
not valid input

参考文章

https://theboostcpplibraries.com/boost.optional