aboutsummaryrefslogtreecommitdiff
path: root/system
diff options
context:
space:
mode:
Diffstat (limited to 'system')
-rwxr-xr-xsystem/include/emscripten/bind.h22
1 files changed, 4 insertions, 18 deletions
diff --git a/system/include/emscripten/bind.h b/system/include/emscripten/bind.h
index 81ee38e9..a0e825ad 100755
--- a/system/include/emscripten/bind.h
+++ b/system/include/emscripten/bind.h
@@ -472,14 +472,6 @@ namespace emscripten {
const noncopyable& operator=(const noncopyable&) = delete;
};
- template<typename T>
- struct ReturnType;
-
- template<typename RT, typename ClassType, typename... Args>
- struct ReturnType<RT (ClassType::*)(Args...)> {
- typedef RT type;
- };
-
template<typename ClassType, typename ElementType>
typename BindingType<ElementType>::WireType get_by_index(int index, ClassType& ptr) {
return BindingType<ElementType>::toWireType(ptr[index]);
@@ -553,11 +545,8 @@ namespace emscripten {
template<int Index>
value_tuple& element(index<Index>) {
using namespace internal;
- typedef
- typename std::remove_reference<
- typename ReturnType<decltype(&ClassType::operator[])>::type
- >::type
- ElementType;
+ ClassType* null = 0;
+ typedef typename std::remove_reference<decltype((*null)[Index])>::type ElementType;
_embind_register_tuple_element(
TypeID<ClassType>::get(),
TypeID<ElementType>::get(),
@@ -633,11 +622,8 @@ namespace emscripten {
template<int Index>
value_struct& field(const char* fieldName, index<Index>) {
using namespace internal;
- typedef
- typename std::remove_reference<
- typename ReturnType<decltype(&ClassType::operator[])>::type
- >::type
- ElementType;
+ ClassType* null = 0;
+ typedef typename std::remove_reference<decltype((*null)[Index])>::type ElementType;
_embind_register_struct_field(
TypeID<ClassType>::get(),
fieldName,