Этот код не компилируется с помощью GCC4.7
struct A {};
void f(A);
struct B { B(std::tuple<A>); };
void f(B);
int main() {
f(std::make_tuple(A()));
}
Поскольку GCC происходит от A
, чтобы использовать пустую оптимизацию базового класса. Однако это заставляет GCC выбирать f(A)
и жаловаться
ошибка:
'A'
является недоступной базой'tuple<A>'
Является ли эта ошибка предоставленной стандартом С++ или это просто ошибка libstdС++?