Я пытаюсь очистить унаследованную базу кода. Он широко использует функции шаблонов, которые включают в себя тип возвращаемого возврата. Он также включает в себя множество указателей на функции, не связанные с шаблоном, не входящие в функции. Во время очистки я обнаружил, что код, эквивалентный следующие работы под Visual Studio 2013:C++ 11 указатель функции typedef с возвращаемым типом возврата
#define function typedef auto
function Kernel (int, int) -> int;
struct Transform
{
Kernel* kernel;
char* description;
};
Transform add_transform { add, "add" };
Является ли это ЬурейеЕ действует в стандарте C++ 11?
В то время как я лично избегаю #defines как чума (особенно когда используется для создания новой языковой функции, такой как эти «функции»), учитывая преобладание возвращающихся типов возврата в проекте, команда чувствует, что это значительно улучшит базу кода более читаемым.
'typedef auto Kernel (int, int) -> int;' является законным. Тем не менее, попробуйте использовать 'std :: function' с этим макросом. –
Я не мог согласиться больше - к сожалению, моя команда не согласна! Я надеялся, что он будет зависимым от компилятора, чтобы я мог отговорить их от его использования. –
'using Kernel = int (int, int);' более читаемый и фактически действительный синтаксис C++. – Casey