Speclib  0.1.2
The library for writing better CUDA libraries
sp::RejectedSpecialisationException Class Referencefinal

Thrown when a specialisation that has been filtered by operator predicates is actually called. More...

#include <SpecLibExceptions.hpp>

Inheritance diagram for sp::RejectedSpecialisationException:
[legend]

Public Member Functions

 RejectedSpecialisationException (const RejectedSpecialisationException &)
 
 RejectedSpecialisationException (const std::string &what)
 
- Public Member Functions inherited from sp::SpecLibException
 SpecLibException (const SpecLibException &)
 
 SpecLibException (const std::string &what)
 
- Public Member Functions inherited from std::runtime_error
runtime_error (T... args)
 
what (T... args)
 
- Public Member Functions inherited from std::exception
exception (T... args)
 
operator= (T... args)
 
what (T... args)
 
~exception (T... args)
 

Detailed Description

Thrown when a specialisation that has been filtered by operator predicates is actually called.

Compile-time predicates can be used to prune the set of specialisations generated by runSpecialised - otherwise the exponential blowup of possibilities (most of which are probably not interesting) would be problematic. Branches that are pruned are compiled as stubs that throw this exception.

This commonly happens for TensorDescriptor APIs. Only a small part of the set of possibilities is usually supported, but since the API isn't strongly-typed users can still write nonsense calls.

See also
Specialisable