История изменений
Исправление fsb4000, (текущая версия) :
Да, g++ не собирает...
Внезапно, ещё тебе информации. MSVC 2017 нормально компилирует такой код без изменений(я даже ifdef убрал)
#include <tuple>
#define BASE std::tuple_element_t<0,std::tuple<base<T>>>
template<typename> struct base { protected: using type = int; };
template<typename T> struct derived :private BASE
{
using typename BASE::type;
};
int main()
{
return derived<int>::type(0);
}
1>------ Перестроение всех файлов начато: проект: Project134, Конфигурация: Release Win32 ------
1>main.cpp
1>Создание кода
1>All 1 functions were compiled because no usable IPDB/IOBJ from previous compilation was found.
1>Создание кода завершено
1>Project134.vcxproj -> C:\Users\fsb4000\Documents\Visual Studio 2017\Projects\Project134\Release\Project134.exe
========== Перестроение всех проектов: успешно: 1, с ошибками: 0, пропущено: 0 ==========
Update: clang++ тоже собирает. Только в g++ проблема...
Исправление fsb4000, :
Да, g++ не собирает...
Внезапно, ещё тебе информации. MSVC 2017 нормально компилирует такой код без изменений(я даже ifdef убрал)
#include <tuple>
#define BASE std::tuple_element_t<0,std::tuple<base<T>>>
template<typename> struct base { protected: using type = int; };
template<typename T> struct derived :private BASE
{
using typename BASE::type;
};
int main()
{
return derived<int>::type(0);
}
1>------ Перестроение всех файлов начато: проект: Project134, Конфигурация: Release Win32 ------
1>main.cpp
1>Создание кода
1>All 1 functions were compiled because no usable IPDB/IOBJ from previous compilation was found.
1>Создание кода завершено
1>Project134.vcxproj -> C:\Users\fsb4000\Documents\Visual Studio 2017\Projects\Project134\Release\Project134.exe
========== Перестроение всех проектов: успешно: 1, с ошибками: 0, пропущено: 0 ==========
Исходная версия fsb4000, :
Внезапно, ещё тебе информации. MSVC 2017 нормально компилирует такой код без изменений(я даже ifdef убрал)
#include <tuple>
#define BASE std::tuple_element_t<0,std::tuple<base<T>>>
template<typename> struct base { protected: using type = int; };
template<typename T> struct derived :private BASE
{
using typename BASE::type;
};
int main()
{
return derived<int>::type(0);
}
1>------ Перестроение всех файлов начато: проект: Project134, Конфигурация: Release Win32 ------
1>main.cpp
1>Создание кода
1>All 1 functions were compiled because no usable IPDB/IOBJ from previous compilation was found.
1>Создание кода завершено
1>Project134.vcxproj -> C:\Users\fsb4000\Documents\Visual Studio 2017\Projects\Project134\Release\Project134.exe
========== Перестроение всех проектов: успешно: 1, с ошибками: 0, пропущено: 0 ==========