diff options
| author | David Blaikie <dblaikie@gmail.com> | 2014-11-12 03:28:57 +0000 | 
|---|---|---|
| committer | David Blaikie <dblaikie@gmail.com> | 2014-11-12 03:28:57 +0000 | 
| commit | e645e40ac24b42dd7768f046eee964ddc9ad1ed1 (patch) | |
| tree | 9256571e641fea52a5b30fb99d14ee8c63db8d76 | |
| parent | ada304d4ddd9b7a78d8ec4a72b6cab8a08d9bf7b (diff) | |
| download | bcm5719-llvm-e645e40ac24b42dd7768f046eee964ddc9ad1ed1.tar.gz bcm5719-llvm-e645e40ac24b42dd7768f046eee964ddc9ad1ed1.zip  | |
Fix non-variadic function_ref cases to match r221753
llvm-svn: 221763
| -rw-r--r-- | llvm/include/llvm/ADT/STLExtras.h | 20 | 
1 files changed, 16 insertions, 4 deletions
diff --git a/llvm/include/llvm/ADT/STLExtras.h b/llvm/include/llvm/ADT/STLExtras.h index 16f850c0f57..4e56e4d7447 100644 --- a/llvm/include/llvm/ADT/STLExtras.h +++ b/llvm/include/llvm/ADT/STLExtras.h @@ -103,7 +103,10 @@ class function_ref<Ret()> {  public:    template<typename Callable> -  function_ref(Callable &&callable) +  function_ref(Callable &&callable, +               typename std::enable_if< +                   !std::is_same<typename std::remove_reference<Callable>::type, +                                 function_ref>::value>::type * = nullptr)        : callback(callback_fn<typename std::remove_reference<Callable>::type>),          callable(reinterpret_cast<intptr_t>(&callable)) {}    Ret operator()() const { return callback(callable); } @@ -122,7 +125,10 @@ class function_ref<Ret(Param1)> {  public:    template<typename Callable> -  function_ref(Callable &&callable) +  function_ref(Callable &&callable, +               typename std::enable_if< +                   !std::is_same<typename std::remove_reference<Callable>::type, +                                 function_ref>::value>::type * = nullptr)        : callback(callback_fn<typename std::remove_reference<Callable>::type>),          callable(reinterpret_cast<intptr_t>(&callable)) {}    Ret operator()(Param1 param1) { @@ -144,7 +150,10 @@ class function_ref<Ret(Param1, Param2)> {  public:    template<typename Callable> -  function_ref(Callable &&callable) +  function_ref(Callable &&callable, +               typename std::enable_if< +                   !std::is_same<typename std::remove_reference<Callable>::type, +                                 function_ref>::value>::type * = nullptr)        : callback(callback_fn<typename std::remove_reference<Callable>::type>),          callable(reinterpret_cast<intptr_t>(&callable)) {}    Ret operator()(Param1 param1, Param2 param2) { @@ -170,7 +179,10 @@ class function_ref<Ret(Param1, Param2, Param3)> {  public:    template<typename Callable> -  function_ref(Callable &&callable) +  function_ref(Callable &&callable, +               typename std::enable_if< +                   !std::is_same<typename std::remove_reference<Callable>::type, +                                 function_ref>::value>::type * = nullptr)        : callback(callback_fn<typename std::remove_reference<Callable>::type>),          callable(reinterpret_cast<intptr_t>(&callable)) {}    Ret operator()(Param1 param1, Param2 param2, Param3 param3) {  | 

