Здравствуйте, al.zatv, Вы писали:
AZ>Мне надо функцию описать
AZ>template <class Graph>
AZ>void fn(Graph &g, typename Graph::vertex_descriptor d1,typename Graph::vertex_descriptor d1, typename Graph::edge_descriptor e1,Graph::edge_descriptor e2)
AZ>{
AZ> и внутри постоянно использую vertex_descriptor
AZ>}
AZ>Очень длинно, почти нечитабельно.
А ты в столбик напиши, и сразу станет читабельно
template <class Graph>
void fn( Graph &g
, typename Graph::vertex_descriptor d1
, typename Graph::vertex_descriptor d2
, typename Graph::edge_descriptor e1
, typename Graph::edge_descriptor e2 )
{
//и внутри постоянно использую vertex_descriptor
}
Это — самое простое и очевидное решение твоей надуманной (как мне кажется) проблемы.
Если так уж хочется иметь короткий список параметров и тебе не нужна перегрузка по этим параметрам (т.е. у тебя всего одна функция), то можно так:
template <class Graph, class Vertex, class Edge>
void fn( Graph &g, Vertex d1, Vertex d2, Edge e1, Edge e2 )
{
BOOST_STATIC_ASSERT(( boost::is_same< Vertex, typename Graph::vertex_descriptor>::value ));
BOOST_STATIC_ASSERT(( boost::is_same< Edge, typename Graph::edge_descriptor>::value ));
//и внутри постоянно использую Vertex
}
Но лично мне решение в столбик нравится больше — оно проще и очевиднее.
ЗЫ И пользуйся кодами разметки, плиз.