C ++ 0x'de değiştirilen AFAIK.
Sanırım bu sadece bir gözetimden ibaretti (kısmi uzmanlaşma etkisini her zaman daha ayrıntılı kodla, işlevi static
bir sınıfın üyesi olarak yerleştirerek elde edebileceğinizi düşünürsek ).
Varsa, ilgili DR'ye (Kusur Raporu) bakabilirsiniz.
DÜZENLEME : Bunu kontrol ederek, başkalarının da buna inandığını görüyorum, ancak taslak standartta hiç kimse böyle bir destek bulamıyor. Bu SO iş parçacığı , işlev şablonlarının kısmi uzmanlaşmasının C ++ 0x'de desteklenmediğini gösteriyor gibi görünüyor .
DÜZENLEME 2 : "işlevi static
bir sınıfın üyesi olarak yerleştirmekle" ne demek istediğime dair sadece bir örnek :
#include <iostream>
using namespace std;
void say( char const s[] ) { std::cout << s << std::endl; }
namespace detail {
template< class T, class U >
struct F {
static void impl() { say( "1. primary template" ); }
};
template<>
struct F<int, char> {
static void impl() { say( "2. <int, char> explicit specialization" ); }
};
template< class T >
struct F< char, T > {
static void impl() { say( "3. <char, T> partial specialization" ); }
};
template< class T >
struct F< T, int > {
static void impl() { say( "4. <T, int> partial specialization" ); }
};
}
template< class T, class U >
void f() { detail::F<T, U>::impl(); }
int main() {
f<char const*, double>();
f<int, char>();
f<char, double>();
f<double, int>();
}
template<typename T, typename U> void f(T t, U u) {}
detemplate<> void f(int t, char u) {}
izin verilir.