[dune-functions] More build failures

Carsten Gräser graeser at mi.fu-berlin.de
Fri Sep 18 10:54:29 CEST 2015


Am 18.09.2015 um 09:54 schrieb Christian Engwer:
> Hi Carsten,
> 
> the other issue seems to be related to your recentchanges regarding
> the hierarchic vector.
> 
> The "struct ConstExprSize" doesn't work with clang. The error ist:
> 
>       in-class initializer for static data member is not a constant expression
> 	      static const int value = std::declval<const typename std::decay<T>::type>().size();
> 		                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
I'm sorry but I did not introduce this. Since declval is not constexpr
I explicitly did not do the above (gcc also complains) but this:

static const int value = ((const typename
std::decay<T>::type*)(nullptr))->size();

I suppose this also didn't compile for you. What's the error message?

Best,
Carsten

> 									   
> Actually it would have failed much earlier, as the Concept check
> didn't pass, due to SFINAE I didn't get any helpful error and thus I
> removed these concept checks. No I get the abve mentioned error.
> 
> Christian
> 
> 
> On Fri, Sep 18, 2015 at 09:22:09AM +0200, Christian Engwer wrote:
>> Kudos Steffen :-)
>>
>> last night I just gave up. I actually wanted test also with gcc, but
>> then some incompatibilities of the compiler arguments it me :-(
>>
>> Ciao
>> Christian
>>
>> On Fri, Sep 18, 2015 at 09:07:09AM +0200, Steffen Müthing wrote:
>>>
>>>> Am 18.09.2015 um 00:18 schrieb Christian Engwer <christian.engwer at uni-muenster.de>:
>>>>
>>>> Sorry, but for me dune-functions already fails in poisson-pq2.cc
>>>>
>>>> The error is in typetree:
>>>> In file included from /home/christi/Uni/Dune/functions/examples/poisson-pq2.cc:22:
>>>> In file included from /home/christi/Uni/Dune/functions/dune/functions/functionspacebases/interpolate.hh:12:
>>>> /home/christi/Uni/Dune/typetree/dune/typetree/childextraction.hh:578:51: error: no matching function for call to 'child'
>>>>        using type = typename std::decay<decltype(child(std::declval<Node>(),std::declval<TreePath>()))>::type;
>>>> 		                                                  ^~~~~
>>>> [...]
>>>> /home/christi/Uni/Dune/typetree/dune/typetree/childextraction.hh:390:12: note: candidate template ignored: could not match 'integral_constant' against 'HybridTreePath'
>>>>      auto child(Node&& node, index_constant<i>, J... j) ->
>>>>           ^
>>>> /home/christi/Uni/Dune/typetree/dune/typetree/childextraction.hh:422:12: note: candidate template ignored: substitution failure [with Node = Dune::Functions::PQkNode<Dune::GridView<Dune::DefaultLeafGridViewTraits<const Dune::YaspGrid<2, Dune::EquidistantCoordinates<double, 2> >, 4> >, 2, unsigned long, Dune::TypeTree::HybridTreePath<> >, J = <>]: no member named 'type' in 'std::enable_if<false, Dune::TypeTree::impl::_lazy_dynamic_decltype<Dune::Functions::PQkNode<Dune::GridView<Dune::DefaultLeafGridViewTraits<const Dune::YaspGrid<2, Dune::EquidistantCoordinates<double, 2> >, 4> >, 2, unsigned long, Dune::TypeTree::HybridTreePath<> > > >'
>>>>      auto child(Node&& node, std::size_t i, J... j) ->
>>>>           ^
>>>> /home/christi/Uni/Dune/typetree/dune/typetree/childextraction.hh:539:10: note: candidate template ignored: substitution failure [with Node = Dune::Functions::PQkNode<Dune::GridView<Dune::DefaultLeafGridViewTraits<const Dune::YaspGrid<2, Dune::EquidistantCoordinates<double, 2> >, 4> >, 2, unsigned long, Dune::TypeTree::HybridTreePath<> >, Indices = <>]: no matching function for call to 'child'
>>>>    auto child(Node&& node, HybridTreePath<Indices...> tp) -> decltype(impl::child(std::forward<Node>(node),tp,tp.enumerate()))
>>>>         ^                                                             ~~~~
>>>> /home/christi/Uni/Dune/typetree/dune/typetree/childextraction.hh:504:10: note: candidate template ignored: could not match 'TreePath' against 'HybridTreePath'
>>>>    auto child(Node&& node, TreePath<Indices...>) -> decltype(child(std::forward<Node>(node),index_constant<Indices>()...))
>>>>         ^
>>>> /home/christi/Uni/Dune/typetree/dune/typetree/childextraction.hh:474:10: note: candidate template ignored: substitution failure [with Node = Dune::Functions::PQkNode<Dune::GridView<Dune::DefaultLeafGridViewTraits<const Dune::YaspGrid<2, Dune::EquidistantCoordinates<double, 2> >, 4> >, 2, unsigned long, Dune::TypeTree::HybridTreePath<> >, Indices = <Dune::TypeTree::HybridTreePath<>>]: no matching function for call to 'child'
>>>>    auto child(Node&& node, Indices... indices) -> decltype(impl::child(std::forward<Node>(node),indices...))
>>>>         ^                                                  ~~~~
>>>> /home/christi/Uni/Dune/typetree/dune/typetree/childextraction.hh:351:12: note: candidate function template not viable: requires single argument 'node', but 2 arguments were provided
>>>>      auto child(Node&& node) -> decltype(std::forward<Node>(node))
>>>>           ^
>>>> /home/christi/Uni/Dune/typetree/dune/typetree/childextraction.hh:437:12: note: candidate function template not viable: requires 3 arguments, but 2 were provided
>>>>      auto child(Node&& node, HybridTreePath<Indices...> tp, Std::index_sequence<i...>) -> decltype(child(std::forward<Node>(node),treePathEntry<i>(tp)...))
>>>>           ^
>>>>
>>>> I'm using clang-3.4, but the error comes also with 3.5 and 3.7
>>>>
>>>> Going back to ec42a64 fixed some of the problems, but I still get
>>>> errors concerning the makeDefaultNodeToRangeMap.
>>>
>>> you get 100 bonus points for triggering a nasty compiler bug in clang! ;-) Basically, clang always considered
>>> the length of a HybridTreePath to be 1, irrespective of its real size due to clang bug 14858
>>> (https://llvm.org/bugs/show_bug.cgi?id=14858). The details are explained in the commit message in TypeTree.
>>>
>>> Now poisson-pq2 fails because it cannot find bind() and unbind(), but that seems to be a different problem…
>>>
>>> Steffen
>>>
>>>>
>>>> Ciao
>>>> Christian
>>>>
>>>> On Thu, Sep 17, 2015 at 02:33:51PM +0200, Oliver Sander wrote:
>>>>> Hi guys,
>>>>>> I suppose it's not a 'still', but an 'again'. The example did build
>>>>>> again after Steffens fixes. But after updating typetree it again failed.
>>>>>> For the moment try going back to rev a709073 of typetree. This worked
>>>>>> for me.
>>>>> stokes-taylorhood builds again, but I get valgrind warnings *if* I build with -O2.
>>>>> (I use "-g -O2 -Wall", to be exact).  Leaving out the -O2 makes the warnings go
>>>>> away.  The warnings are caused by the interpolateTreeSubset method shortly
>>>>> after line 300.  Before, the rhs variable contains only zeros.  After the call,
>>>>> it contains initialized values (supposedly) for all boundary dofs.  Can anybody
>>>>> reproduce this?
>>>>> Thanks,
>>>>> Oliver
>>>>>
>>>>>>
>>>>>> @Steffen: Maybe it helps that the breakage has happened after a709073.
>>>>>>
>>>>>> Best,
>>>>>> Carsten
>>>>>>
>>>>>>> Here is what clang has to say.  Any help would be appreciated.
>>>>>>> Best,
>>>>>>> Oliver
>>>>>>>
>>>>>>> /home/sander/dune/dune-functions/examples/stokes-taylorhood.cc:241:35: warning: suggest braces around initialization of subobject [-Wmissing-braces]
>>>>>>>  std::array<int,dim> elements = {4, 4};
>>>>>>>                                  ^~~~
>>>>>>>                                  {   }
>>>>>>> In file included from /home/sander/dune/dune-functions/examples/stokes-taylorhood.cc:22:
>>>>>>> In file included from /home/sander/dune/dune-functions/dune/functions/functionspacebases/pqknodalbasis.hh:14:
>>>>>>> In file included from /home/sander/dune/dune-functions/dune/functions/functionspacebases/gridviewfunctionspacebasis.hh:7:
>>>>>>> In file included from /home/sander/dune/dune-functions/dune/functions/functionspacebases/nodes.hh:6:
>>>>>>> /home/sander/dune/dune-typetree/dune/typetree/compositenode.hh:195:43: error: no matching function for call to 'treePathSize'
>>>>>>>        static_assert(sizeof...(I) > 0 || treePathSize(i0) > 0,
>>>>>>>                                          ^~~~~~~~~~~~
>>>>>>> /home/sander/dune/dune-functions/dune/functions/functionspacebases/taylorhoodbasis.hh:232:32: note: in instantiation of function template specialization
>>>>>>> 'Dune::TypeTree::CompositeNode<Dune::Functions::TaylorHoodVelocityTree<Dune::GridView<Dune::DefaultLeafGridViewTraits<const Dune::YaspGrid<2, Dune::EquidistantCoordinates<double, 2> >, 4> >, unsigned
>>>>>>> long, Dune::TypeTree::HybridTreePath<std::integral_constant<unsigned long, 0> > >, Dune::Functions::PQkNode<Dune::GridView<Dune::DefaultLeafGridViewTraits<const Dune::YaspGrid<2,
>>>>>>> Dune::EquidistantCoordinates<double, 2> >, 4> >, 1, unsigned long, Dune::TypeTree::HybridTreePath<std::integral_constant<unsigned long, 1> > > >::child<std::integral_constant<unsigned long, 0>, int>'
>>>>>>> requested here
>>>>>>>    pq2NodeIndexSet_.bind(node.child(_0, 0));
>>>>>>>                               ^
>>>>>>> /home/sander/dune/dune-functions/dune/functions/functionspacebases/defaultlocalindexset.hh:41:19: note: in instantiation of member function
>>>>>>> 'Dune::Functions::TaylorHoodNodeIndexSet<Dune::GridView<Dune::DefaultLeafGridViewTraits<const Dune::YaspGrid<2, Dune::EquidistantCoordinates<double, 2> >, 4> >, std::array<unsigned long, 2>,
>>>>>>> Dune::TypeTree::HybridTreePath<>, unsigned long>::bind' requested here
>>>>>>>    nodeIndexSet_.bind(localView_->tree());
>>>>>>>                  ^
>>>>>>> /home/sander/dune/dune-functions/examples/stokes-taylorhood.cc:199:19: note: in instantiation of member function
>>>>>>> 'Dune::Functions::DefaultLocalIndexSet<Dune::Functions::DefaultLocalView<Dune::Functions::DefaultGlobalBasis<Dune::Functions::TaylorHoodNodeFactory<Dune::GridView<Dune::DefaultLeafGridViewTraits<const
>>>>>>> Dune::YaspGrid<2, Dune::EquidistantCoordinates<double, 2> >, 4> >, std::array<unsigned long, 2>, unsigned long> > >,
>>>>>>> Dune::Functions::TaylorHoodNodeIndexSet<Dune::GridView<Dune::DefaultLeafGridViewTraits<const Dune::YaspGrid<2, Dune::EquidistantCoordinates<double, 2> >, 4> >, std::array<unsigned long, 2>,
>>>>>>> Dune::TypeTree::HybridTreePath<>, unsigned long> >::bind' requested here
>>>>>>>    localIndexSet.bind(localView);
>>>>>>>                  ^
>>>>>>> /home/sander/dune/dune-functions/examples/stokes-taylorhood.cc:277:3: note: in instantiation of function template specialization
>>>>>>> 'assembleStokesProblem<Dune::Functions::DefaultGlobalBasis<Dune::Functions::TaylorHoodNodeFactory<Dune::GridView<Dune::DefaultLeafGridViewTraits<const Dune::YaspGrid<2,
>>>>>>> Dune::EquidistantCoordinates<double, 2> >, 4> >, std::array<unsigned long, 2>, unsigned long> > >' requested here
>>>>>>>  assembleStokesProblem(taylorHoodBasis, stiffnessMatrix);
>>>>>>>  ^
>>>>>>> /home/sander/dune/dune-typetree/dune/typetree/treepath.hh:45:27: note: candidate template ignored: could not match 'TreePath' against 'integral_constant'
>>>>>>>    constexpr std::size_t treePathSize(const TreePath<i...>&)
>>>>>>>                          ^
>>>>>>> /home/sander/dune/dune-typetree/dune/typetree/treepath.hh:372:27: note: candidate template ignored: could not match 'HybridTreePath' against 'integral_constant'
>>>>>>>    constexpr std::size_t treePathSize(const HybridTreePath<T...>&)
>>>>>>>                          ^
>>>>>>> /home/sander/dune/dune-functions/examples/stokes-taylorhood.cc:47:55: error: no matching member function for call to 'child'
>>>>>>>  auto& velocityLocalFiniteElement = localView.tree().child(_0,0).finiteElement();
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> dune-functions mailing list
>>>>>>> dune-functions at dune-project.org
>>>>>>> http://lists.dune-project.org/mailman/listinfo/dune-functions
>>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> dune-functions mailing list
>>>>> dune-functions at dune-project.org
>>>>> http://lists.dune-project.org/mailman/listinfo/dune-functions
+


-- 
Prof. Dr. Carsten Gräser
Freie Universität Berlin
Institut für Mathematik
Arnimallee 6
14195 Berlin, Germany
phone: +49 30 838 72637
fax  : +49 30 838 472637
email: graeser at mi.fu-berlin.de
URL  : http://page.mi.fu-berlin.de/graeser

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: OpenPGP digital signature
URL: <https://lists.dune-project.org/pipermail/dune-functions/attachments/20150918/870418a4/attachment.sig>


More information about the dune-functions mailing list