fork(3) download
  1. #include <boost/optional.hpp>
  2. #include <boost/logic/tribool.hpp>
  3. #include <iostream>
  4.  
  5. void foo(boost::optional<bool> opb){
  6.  
  7. if(!opb)
  8. std::cout << "none" << std::endl;
  9. else if(*opb)
  10. std::cout << "true" << std::endl;
  11. else
  12. std::cout << "false" << std::endl;
  13.  
  14. }
  15.  
  16. void bar(boost::logic::tribool trb){
  17.  
  18. if(trb)
  19. std::cout << "true" << std::endl;
  20. else if(!trb)
  21. std::cout << "false" << std::endl;
  22. else
  23. std::cout << "indeterminate" << std::endl;
  24.  
  25. }
  26.  
  27. int main(){
  28. // optional<bool> a: 未初期化, b: true, c: false
  29. boost::optional<bool> a, b = true, c = false, d = boost::none;
  30.  
  31. // tribool v: 未初期化, x: true, y: false, z: indeterminate
  32. boost::logic::tribool v, x = true, y = false, z = boost::logic::indeterminate;
  33.  
  34. std::cout << "a: ";
  35. foo(a);
  36.  
  37. std::cout << "b: ";
  38. foo(b);
  39.  
  40. std::cout << "c: ";
  41. foo(c);
  42.  
  43. std::cout << "d: ";
  44. foo(d);
  45.  
  46. std::cout << std::endl;
  47.  
  48. std::cout << "v: ";
  49. bar(v);
  50.  
  51. std::cout << "x: ";
  52. bar(x);
  53.  
  54. std::cout << "y: ";
  55. bar(y);
  56.  
  57. std::cout << "z: ";
  58. bar(z);
  59.  
  60. return 0;
  61. }
Success #stdin #stdout 0s 2728KB
stdin
Standard input is empty
stdout
a: none
b: true
c: false
d: none

v: false
x: true
y: false
z: indeterminate