LINUX.ORG.RU

История изменений

Исправление 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 ==========