Limit concat to non pointer types to avoid hard to track problems

This commit is contained in:
jaby 2023-11-26 18:54:24 -05:00
parent 33e19c49c8
commit 21649c4fe8
2 changed files with 20 additions and 2 deletions

View File

@ -69,6 +69,23 @@ namespace JabyEngine {
struct conjunction<B1, Bn...> : conditional<bool(B1::value), conjunction<Bn...>, B1>::type {
};
// #############################################
template<class T>
struct is_pointer : false_type {};
template<class T>
struct is_pointer<T*> : true_type {};
template<class T>
struct is_pointer<T* const> : true_type {};
template<class T>
struct is_pointer<T* volatile> : true_type {};
template<class T>
struct is_pointer<T* const volatile> : true_type {};
// #############################################
template<typename T, typename... Ts>

View File

@ -1,5 +1,6 @@
#pragma once
#include "../../Auxiliary/bits.hpp"
#include "../../Auxiliary/type_traits.hpp"
namespace JabyEngine {
namespace GPU {
@ -37,13 +38,13 @@ namespace JabyEngine {
}
template<typename T>
T& concat(T& obj) {
enable_if<!is_pointer<T>::value, T&>::type concat(T& obj) {
Link::set_adr(&obj);
return obj;
}
template<typename T>
const T& concat(const T& obj) {
enable_if<!is_pointer<T>::value, const T&>::type concat(const T& obj) {
return concat(const_cast<T&>(obj));
}