AFAIK yang diubah di C ++ 0x.
Saya kira itu hanya kekeliruan (mengingat Anda selalu bisa mendapatkan efek spesialisasi parsial dengan kode yang lebih verbose, dengan menempatkan fungsi sebagai static
anggota kelas).
Anda dapat mencari DR (Laporan Cacat) yang relevan, jika ada.
EDIT : memeriksa ini, saya menemukan bahwa orang lain juga percaya itu, tetapi tidak ada yang dapat menemukan dukungan seperti itu dalam standar draf. Utas SO ini tampaknya menunjukkan bahwa spesialisasi sebagian dari templat fungsi tidak didukung di C ++ 0x .
EDIT 2 : hanya contoh dari apa yang saya maksud dengan "menempatkan fungsi sebagai static
anggota kelas":
#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) {}
jugatemplate<> void f(int t, char u) {}
diperbolehkan.