例如有一个模板类:
template<typename A, typename B>
class Example;
Run Code Online (Sandbox Code Playgroud)
如果一对 (A, B) 被特化,则其他类型不能特化 A。例如,允许 (B, C),但不允许 (A, C)。
Example<int, double> E1, E2, E3; // OK
Example<int, double> E4; // OK
Example<int, bool> E5; // Not Allowed (Because <int, double> already exists)
Example<bool, double> E6; // OK
Example<double, double> E7; // OK
Example<double, int> E8; // Not Allowed (<double, double> already exists)
Run Code Online (Sandbox Code Playgroud)
我尝试在运行时在模板参数 A 和 B 之间使用 std::map,但是是否有办法在编译期间执行此操作?喜欢 SFINAE 或其他技术吗?