Apache Mesos
Main Page
Related Pages
Namespaces
Classes
Files
Examples
File List
File Members
3rdparty
stout
include
stout
some.hpp
Go to the documentation of this file.
1
// Licensed under the Apache License, Version 2.0 (the "License");
2
// you may not use this file except in compliance with the License.
3
// You may obtain a copy of the License at
4
//
5
// http://www.apache.org/licenses/LICENSE-2.0
6
//
7
// Unless required by applicable law or agreed to in writing, software
8
// distributed under the License is distributed on an "AS IS" BASIS,
9
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
// See the License for the specific language governing permissions and
11
// limitations under the License.
12
13
#ifndef __STOUT_SOME_HPP__
14
#define __STOUT_SOME_HPP__
15
16
#include <type_traits>
17
#include <utility>
18
19
// A useful type that can be used to represent an Option or Result.
20
//
21
// Examples:
22
//
23
// Result<int> result = Some(42);
24
// Option<std::string> = Some("hello world");
25
//
26
// void foo(Option<std::string> o) {}
27
//
28
// foo(Some("hello world"));
29
30
// NOTE: We use an intermediate type, _Some, so that one doesn't need
31
// to explicitly define the template type when doing 'Some(value)'.
32
template
<
typename
T>
33
struct
_Some
34
{
35
_Some
(T _t) :
t
(
std
::move(_t)) {}
36
37
T
t
;
38
};
39
40
41
template
<
typename
T>
42
_Some<typename std::decay<T>::type
>
Some
(T&&
t
)
43
{
44
return
_Some<typename std::decay<T>::type
>(std::forward<T>(
t
));
45
}
46
47
#endif // __STOUT_SOME_HPP__
std
Definition:
type_utils.hpp:619
_Some::t
T t
Definition:
some.hpp:37
_Some
Definition:
some.hpp:33
Some
_Some< typename std::decay< T >::type > Some(T &&t)
Definition:
some.hpp:42
_Some::_Some
_Some(T _t)
Definition:
some.hpp:35
Generated by
1.8.11