fork(1) download
  1. #include <iostream>
  2. using namespace std;
  3. class Dummy{};
  4. template<class T>class B{};
  5. template<class T>class C{};
  6. template<template<class T> class BC>class D{
  7. //f() is instantiated only if "BC" == "B"
  8. public: template<class BCLocal=BC<Dummy>> static
  9. typename std::enable_if<std::is_same<BCLocal,B<Dummy>>::value,void>::type f(){
  10. }
  11. //^ #1
  12. };
  13. int main() {
  14. D<B>::f();
  15. //D<C>::f(); //compile error as expected, which is good
  16. return 0;
  17. }
Success #stdin #stdout 0s 16064KB
stdin
Standard input is empty
stdout
Standard output is empty