I don't understand the comment; but, I can tell that a class member variable template must be declared static. 'constexpr'ness is immaterial to that.
-- Gaby On Thu, Nov 13, 2014 at 10:48 PM, David Blaikie <dblai...@gmail.com> wrote: > My guess is that the proposal was written assuming a certain > implementation of constexpr that never panned out. > > It looks like both GCC and Clang expect constexpr member variables to be > explicitly marked static: > > const.cpp:5:19: error: non-static data member 'f' declared 'constexpr' > constexpr foo f{}; > ^ > > (is GCC 4.9's diagnostic - for a simple non-template constexpr member > variable) > > > On Thu, Nov 13, 2014 at 8:38 PM, Larry Evans <cppljev...@suddenlink.net> > wrote: > >> The following code: >> >> //{======================================= >> #include <type_traits> >> struct variable_template >> { >> template <int Value> >> std::integral_constant<int,Value> constexpr >> value{} >> ; >> }; >> #include <iostream> >> #include <iomanip> >> int main() >> { >> std::cout<< >> variable_template:: >> value<1>()<<std::endl; >> return 0; >> } >> //}======================================= >> produces error: >> //{======================================= >> >> /home/evansl/dwnlds/llvm/3.5/binary/clang+llvm-3.5.0-x86_64-linux-gnu/bin/clang++ >> -c -O0 -g -stdlib=libc++ -std=c++14 -ftemplate-backtrace-limit=0 >> -I/home/evansl/prog_dev/clang/libcxx >> -I/home/evansl/prog_dev/boost/sandbox/rw/non_variadic_templates >> -I/home/evansl/prog_dev/boost/sandbox/rw/sandbox/lje >> -I/home/evansl/prog_dev/boost/boost-releases/ro/boost_1_56_0 >> -DTYPE_AT_IMPL=0 -ftemplate-depth=324 variable_templates.cpp -MMD -o >> /tmp/build/clangxx3_5_bin/clang/libcxx/variable_templates.o >> variable_templates.cpp:23:39: error: non-static data member cannot be >> constexpr; did you intend to make it static? >> std::integral_constant<int,Value> constexpr >> ^ >> static >> 1 error generated. >> //}======================================= >> when compiled with the binary clang downloaded from: >> >> >> >> http://llvm.org/releases/3.5.0/clang+llvm-3.5.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz >> >> and used on system: >> >> Linux lje-OptiPlex-9020 3.13.0-39-generic #66-Ubuntu SMP Tue Oct 28 >> 13:30:27 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux >> >> The code is, AFAICT, essentially the same as the `struct >> matrix_measures' in section 3.2 of: >> >> http://isocpp.org/files/papers/N3651.pdf >> >> Is this a clang bug or is the code somehow wrong? >> >> TIA. >> >> -regards, >> Larry >> >> >> _______________________________________________ >> cfe-users mailing list >> cfe-users@cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-users >> > > > _______________________________________________ > cfe-users mailing list > cfe-users@cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-users > >
_______________________________________________ cfe-users mailing list cfe-users@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/cfe-users