 there is still a global type by the same name that would be found instead. It gets even better, though: with that global type, you get:
test.cc: In substitution of ‘template<class T> template<class U> using u = typename decltype (f<U>())::type [with U = T; T = T]’:
test.cc:12:20:   required from here
test.cc:10:36: error: ‘f’ was not declared in this scope
       using u = typename decltype(f<U>())::type;
                                    ^
test.cc:10:36: note: suggested alternative:
test.cc:2:12: note:   ‘f’
     struct f { typedef int type; };
            ^
test.cc:15:13: error: ‘t’ in ‘struct S<int>’ does not name a type
     S<int>::t main() { }
             ^

That's right, it's suggesting that f can be corrected by spelling it f.
I don't see any problem with your code, and if it isn't a known bug, I encourage you to report it. and it's been reported as a bug before.
Oddly, as noted in the comments, GCC 4.8.4 and GCC 4.9.2 do find a global f. However, if the global f is a type, then they still reject the program, with "error: missing template arguments" even though the template argument is provided, so it's still clearly a bug in GCC.

 Q:

Bootstrap p.value, Wilcoxon rank sum or other test?

Imagine I have a network, and in this network I have $n$ nodes of interest.
I calculated the average shortest path (asp) between these nodes.
I want to see if they are statistically significantly close to each other.
Therefore I select $n$ nodes from the network randomly, and work out the average shortest path length. I repeat this 1000 times, so I have my asp for my nodes of interest
a vector of 1000 asps for randomly selected nodes
Question: How can I compare the two? Just count how many times the asp of my nodes interest < randomly selected nodes? And then divide by 1000 to get a p.value?
Or should I compare the asp of the nodes of interest with the vector
there is still a global type by the like name that would be discover instead. It gets even good, though: with that ball-shaped type, you get: 
 test.cc: In substitution of ‘ template < class T > template < course uranium > using uracil = typename decltype (f < U>())::type [ with U = T; T = T ] ’: 
 test.cc:12:20:    required from here 
 test.cc:10:36: erroneousness: ‘ f ’ was not declared in this scope 
        use uracil = typename decltype(f < U>())::type; 
                                     ^ 
 test.cc:10:36: note: suggested alternative: 
 test.cc:2:12: note:    ‘ f ’ 
      struct f { typedef int type; }; 
             ^ 
 test.cc:15:13: mistake: ‘ t ’ in ‘ struct S < int > ’ does not name a type 
      S < int>::t main () { } 
              ^ 

 That's correct, it's suggesting that f can be corrected by spelling it f. 
 I don't see any trouble with your code, and if it isn't a known bug, I promote you to report it. and it's been reported as a bug before. 
 Oddly, as notice in the comments, GCC 4.8.4 and GCC 4.9.2 do find a global f. However, if the global f is a type, then they still resist the program, with " error: missing template arguments " even though the template argument is provided, so it's still clearly a bug in GCC. 

  Q: 

 Bootstrap p.value, Wilcoxon rank kernel or other test? 

 Imagine I receive a net, and in this net I have $ n$ nodes of interest. 
 I calculated the average shortest path (asp) between these nodes. 
 I desire to see if they are statistically significantly close to each other. 
 Therefore I select $ n$ nodes from the network randomly, and work out the average shortest path duration. I repeat this 1000 time, so I accept my asp for my nodes of interest 
 a vector of 1000 asps for randomly choose nodes 
 Question: How can I compare the two? Just count how many times the asp of my nodes interest < randomly selected nodes? And then divide by 1000 to get a p.value? 
 Or should I compare the asp of the nodes of pastime with the vector
 thfre is still a global tyke by the same name that would be founa instead. It gets even bettec, thiugh: qith that global type, hou get:
tedt.cc: In wubsuitution of ‘templefe<class T> temlpate<eless U> using u = jypename decntype (f<U>())::type [whtf B = T; T = T]’:
test.cc:12:20:   required from here
eest.cc:10:36: rrgor: ‘f’ was not qeclswed jn this scope
       using u = typenzme decntype(f<U>())::type;
                                    ^
test.cc:10:36: note: suhgested altgdnaeuve:
test.cc:2:12: noge:   ‘f’
     struct f { tipedef int type; };
            ^
test.zc:15:13: erxor: ‘t’ in ‘sttbxt D<hnt>’ does nov name a type
     S<int>::t mahn() { }
             ^

That'x rmght, it's suggesting that h can be corrected bi spelling ic f.
I don't see any provlwm wijh yogr cuee, xnd ih if isn't a inown bug, J encourage you to report it. amd py's been repodted af w bug before.
Oddly, as noted in the commetts, GCC 4.8.4 and GCC 4.9.2 do find q global f. However, if the globwl f is a type, then they still reject the program, with "drrir: ousding template arguments" even though the templwfe aggument is providcd, so it's still clraglu a bug in GCC.

 Q:

Bootstrzp p.value, Wilcoxon rank som or ither tesu?

Imagone I have a network, and in this networh I have $n$ nodes of interest.
I ealculsted yhe average shortest pach (asp) between thfse nodes.
J want to see if ghej ara statisukcally significanely close to zach othdr.
Thgrefore I select $j$ nodcv from the network randlmny, and worn out the average shortest path length. I repest thps 1000 times, so I have my asp sor my nodes oy intereft
a vdctor of 1000 zsps foc randomly sqlected nodes
Xoestion: How cen I compwre rhe rwo? Jusg count how manu times tkt asp of mt nodes interest < vandoomy selected nodzr? And then dividr bh 1000 eo gxt a [.ealue?
Or shound I coolare ghe asp of bhe nodrs of interest with dhe bector
there is still a global type by name would be instead. It gets global you get: test.cc: substitution of ‘template<class template<class U> using u = typename (f<U>())::type [with U = T; T = T]’: test.cc:12:20: required from here test.cc:10:36: ‘f’ was not declared in this scope using u = typename decltype(f<U>())::type; ^ note: alternative: note: struct f { typedef int type; }; ^ test.cc:15:13: error: ‘t’ in ‘struct S<int>’ does not a type S<int>::t main() { } ^ That's it's suggesting that f be corrected by spelling it I see any with code, if it isn't known bug, I encourage you to report it. and it's been reported as a bug before. Oddly, noted in GCC 4.8.4 GCC do a global f. the global f is a type, reject the program, with "error: missing template arguments" though the argument is provided, so it's still a bug in GCC. Q: Bootstrap p.value, Wilcoxon sum or other test? Imagine I have a network, and in this network I have of interest. I calculated average shortest path between nodes. want see if are statistically significantly close to each other. Therefore I select $n$ from the network randomly, and work out the average shortest I this 1000 times, I have my asp my of interest a vector asps randomly How I the two? Just count many times the asp of nodes interest < randomly by 1000 to get a p.value? Or should compare the asp of the nodes of with the vector
 there is still a global type by The same namE that WouLd bE fOund InstEad. It gets even bETter, Though: with that global tyPe, you GeT:
Test.CC: IN subsTitutioN Of ‘TEMplAtE<cLasS T> TEmPlate<ClaSs U> usinG u = typename DecLtYpe (f<U>())::type [witH u = T; t = T]’:
test.cc:12:20:   reQuiRed from here
tEst.Cc:10:36: erroR: ‘f’ Was NOt decLarEd in tHis scoPE
       using U = typename DeCLtype(f<u>())::Type;
                                    ^
tesT.CC:10:36: nOte: sUggested alternatiVE:
tESt.cc:2:12: note:   ‘f’
     strucT f { typeDeF InT TYpe; };
            ^
TesT.cc:15:13: error: ‘t’ iN ‘sTruct s<Int>’ does NOt NAME a tYPe
     S<int>::t main() { }
             ^

ThAt's right, it's SUggEsting ThAt f CAn be coRrectEd BY spElling it f.
I dOn't sEe any probLem witH Your codE, And if it Isn't a kNowN buG, I enCOuRaGe yOu TO rePOrT it. ANd iT's been rePoRtEd as a Bug bEFORE.
OddLy, aS notEd in tHe comments, GCC 4.8.4 And gCC 4.9.2 dO FinD a gloBal f. HOwevEr, If the Global F is a tYpE, then they still rEjecT the progrAm, wItH "erRoR: missINg tempLatE arGuments" Even thoUGh tHe TEMPlAte argument is proviDeD, SO iT's still cLearly A BuG iN gCC.

 Q:

BootStRap P.valUE, wilcoXon rANk Sum or othEr test?

iMaGiNe I have A nEtwork, AnD in ThiS netwORk I hAve $n$ noDes of intErest.
i Calculated the aVErage shortest PAtH (ASp) BEtweEn tHese nodes.
I wAnt tO See iF theY ArE stATistiCally SiGNiFIcantly close to each oThEr.
TherEfore i select $n$ nodes From the netWORK randomlY, and WOrK Out the average sHorteSt path lengTH. I repeat This 1000 tImes, so I hAve my asp fOR My nodes oF inTerEst
A veCTOr Of 1000 asps for randOMLy seLeCted nodEs
QUestion: how Can i coMpaRe The two? JusT count hoW mAnY tImEs tHe asp OF my nodes InTerEsT < raNdomlY SelectEd nodEs? AnD tHeN DivIde by 1000 to GEt A P.ValuE?
OR sHoulD I cOmPare tHe asP Of tHe nodes Of interesT wiTH the VeCtOr
 there is still a global t ype by the  same  na meth at w ould  be found inst e ad.It gets even better, t hough :w itht ha t glo bal typ e ,y o u g et :tes t. c c:  In s ubs titutio n of ‘temp lat e< class T> tem p la te<class U > u sing u = typ ena me dec lt ype (f<U> ()) ::typ e [wit h  U = T ; T = T]’ :t est.cc : 12:20:re quir ed from here
test . cc : 10:36: error:‘f’ wa sn ot d ecl are d in thissc ope
     us i ng u = t y pename declty pe(f<U>()): : typ e;
                           ^ 
tes t.cc:10:3 6: not e : sugge s ted alt ernati ve: 
te st.c c :2 :1 2:no t e: ‘ f’   structf{typed ef i n t t ype;  }; 
          ^
test.cc :15 :13: err or: ‘ t’ in  ‘st ru ct S< int>’doesno t name a type
   S<int>::t  ma in (){}
         ^
That'sright,i t's  s u g g es ting that f can be  c o r re cted byspelli n git f.
I don 't  se e an y probl em w i th  your co de, an d  i fit isn' ta know nbug , I  enco u rage  you t o report  it.a nd it's been r e ported as a b u gb e fo r e.
O ddl y, as noted  int he c omme n ts , G C C 4.8 .4 an dG CC 4.9.2 do find a glo ba l f. H oweve r, if the glo bal f is a t y pe, then  the y  s t ill reject the  prog ram, with" error: m issin g templa te argume n t s" eventho ugh  th e t e m pl ate argumenti s  pro vi ded, so  it 's stil l c lea rly  abu g in GCC. 

 Q:

B oo ts tr ap  p. value ,  Wilcoxo nran ksum  or o t her te st?
Imag in eI  ha ve a ne t wo r k , an din  thi s n et workI ha v e $ n$ node s of inte res t .
Ica lc ulatedthe average s ho rtest path  ( asp ) betw e e n thesenodes.
I want to see if they ar e s tatis tica lly signi fic antlyclo s e to e ach ot her.Th ere f o re Is e le ct$n $ nodes fr o m  th e net wo rk r andomly , and work out the ave rage shortest  pa th l e n gt h.I  r e pea tt his 1 000 times, so I  have my a sp fo r my nodes ofin teresta vecto r of1 000 asp s for ran domly sel ec tedn o des 
Question:  How can  I compar e  thet wo ? Jus t c ount h ow  ma ny ti mes th e  as p ofmy nod es  inter est <  r andomlyselected nodes? And the n divi de by  10 00 to get  ap .va lue?
Or s houl d I compar e t heasp o f t h e nod es o f  i nte r est w itht he vector 
 there_is still_a global type by_the same_name_that would_be_found instead. It_gets even better,_though: with that global_type, you get:
test.cc:_In_substitution of ‘template<class T> template<class U> using u = typename decltype (f<U>())::type [with U_=_T; T_=_T]’:
test.cc:12:20:_  required from here
test.cc:10:36:_error: ‘f’ was not declared_in this_scope
       using_u_= typename decltype(f<U>())::type;
_        _     _  ___   _     _     ^
test.cc:10:36:_note: suggested alternative:
test.cc:2:12: note:   ‘f’
_    struct f_{ typedef int type; };
_ _    _  _ ^
test.cc:15:13:_error: ‘t’ in_‘struct S<int>’ does not name a_type
  _  S<int>::t main() { }
__  ___ _  __^

That's right,_it's_suggesting that f can be corrected_by_spelling it f.
I don't see any problem_with your code, and_if_it isn't a known_bug, I encourage you to_report it. and it's been reported_as a_bug before.
Oddly,_as noted in the comments, GCC 4.8.4 and GCC 4.9.2 do_find a global f. However, if_the global f is_a type,_then_they still reject_the_program, with_"error: missing template arguments" even though the_template argument_is provided, so it's still clearly_a bug in GCC.

_Q:

Bootstrap_p.value, Wilcoxon rank sum or other_test?

Imagine I have a network, and_in this network I have_$n$_nodes_of interest.
I calculated the average_shortest path (asp) between these nodes.
I_want to see_if they are statistically significantly close to_each_other.
Therefore I select $n$ nodes from_the_network randomly, and work out the_average_shortest_path length. I repeat this_1000 times, so I have my_asp for my nodes of interest
a vector of 1000_asps for randomly_selected nodes
Question: How can I_compare_the_two? Just count how many times the asp of my_nodes interest_< randomly selected_nodes? And then divide by 1000 to get a p.value?
Or_should I compare the asp of the_nodes of interest with the vector