#include <iostream>
using std::cout;
template<typename T>
class A{
public:
template<typename U>
void f(U const&) & ;
template<typename U>
void f(U const&) && ;
};
template<typename T>
template<typename U>
void A<T>::f(U const& x) & { std::cout << "lvalue object\n" ; }
template<typename T>
template<typename U>
void A<T>::f(U const& x) && { std::cout << "rvalue object\n" ; }
// template class A<int> ;
// template void A<int>::f<int>(int const&) & ;
// template void A<float>::f<int>(int const&) &&;
int main(){
A<int> a ;
a.f<int>(2); // lvalue
A<float>().f<int>(1); // rvalue
}
код работает, за исключением, если я попытаюсь разбить его на отдельные-компиляции (* .hh, * .cc, * .ie и основной). Заявления (прокомментированные) выдадут компилятор ICE.ошибка шаблона конкретизации реф квалифицированных членов
Я не вижу ничего плохого в синтаксисе создания экземпляра. Может кто-то помочь мне в этом ...
Что точная ошибка, которую вы получаете? На каком языке это, C? – Taegost
C++, такая же проблема в gcc-4.9.3 и gcc-6.1.0 (которую btw компилирует для установки в четырехкратное время из 4.9.3). Ошибка, которую вы получаете, является странной, нет репликации точек. –