我有一个模板化结构,我希望将其作为模板参数2传递给函数 - allocator和deallocator。有没有什么方法可以将它们组织成类似模板的结构,这样它们就不会有不匹配的机会?
我不想使用对结构的常规引用,因为那时会有很多不同的实例,但我想为每对函数提供一个。
示例:
template<bool bNoExcept>
struct type_object_factory_memory_mng_funcs
{
void *(&refAllocFunction)(std::size_t) noexcept(bNoExcept);
std::conditional<bNoExcept, bool, void> (&refDeAllocFunction)(void *) noexcept(bNoExcept);
};
template<typename Type, bool bNoExcept, type_object_factory_memory_mng_funcs<bNoExcept> &&refMemFuncs>
struct type_object_factory ; //here instance for each rvalue object passed will be created
有更好的方法吗?
我不想用这个:
template<typename Type, bool bNoExcept, void *(&refAllocFunction)(std::size_t) noexcept(bNoExcept), std::conditional<bNoExcept, bool, void> (&refDeAllocFunction)(void *) noexcept(bNoExcept)>
struct type_object_factory ;
通过这种方式,Becaus很有可能会传递不匹配的功能。任何想法如何克服这个?
我还希望为可能抛出的每对函数隐式定义异常的特定类型。