Skip to content

Commit 65f4ea7

Browse files
committed
fix SFINAE stuff
1 parent d4f84a6 commit 65f4ea7

File tree

2 files changed

+12
-12
lines changed

2 files changed

+12
-12
lines changed

examples_tests

include/nbl/builtin/hlsl/type_traits.hlsl

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -402,37 +402,37 @@ struct is_reference : bool_constant<true> { };
402402
template<typename T>
403403
struct is_reference<T,typename make_void<T[1]>::type> : bool_constant<false> { };
404404

405+
template<class T, bool = is_reference<T>::value>
406+
struct add_reference_helper : type_identity<T> {};
407+
405408
template<class T>
406-
struct declval
409+
struct add_reference_helper<T, false>
407410
{
408411
static T member[1];
409-
using reference_type = decltype(member[0]);
412+
using type = decltype(member[0]);
410413
};
411414

412415
template<class T>
413-
struct add_lvalue_reference :
414-
conditional<
415-
is_reference<T>::value,
416-
T,
417-
typename declval<T>::reference_type>
418-
{
419-
};
416+
struct add_lvalue_reference : add_reference_helper<T> {};
420417

421418
template<typename T>
422419
T remove_reference_impl(T v)
423420
{
424421
return v;
425422
}
426423

424+
template<typename T, bool = is_reference<T>::value>
425+
struct remove_reference_helper : type_identity<T> {};
426+
427427
template<typename T>
428-
struct remove_reference_helper
428+
struct remove_reference_helper<T, true>
429429
{
430430
static T member;
431431
using type = decltype(remove_reference_impl(member));
432432
};
433433

434434
template<typename T>
435-
struct remove_reference : conditional<is_reference<T>::value, typename remove_reference_helper<T>::type, T> {};
435+
struct remove_reference : remove_reference_helper<T> {};
436436

437437
}
438438

0 commit comments

Comments
 (0)