J'utilise sizeof() dans un argument de modèle, comme ceci:xlc: sizeof de classe basé sur un modèle ne fonctionne pas
#include <iostream>
template<class A>
struct Foo {
A a;
};
template<class A, size_t S = sizeof(Foo<A>)>
class Bar {
public:
Bar() {
// prints 4, as expected
std::cout << sizeof(Foo<A>) << std::endl;
// prints 1! why?
std::cout << S << std::endl;
}
};
int main(int, char**) {
Bar<int> foo;
}
Pour certains xlc raison ++ décide sizeof(Foo<A>)
que les résultats de l'argument du modèle par défaut dans 1. Pourquoi est-ce vrai? est-ce un bug de compilateur? Il imprime 4, 4 dans Visual Studio 2015.
J'utilise xlc version z/OS V2.1 XL C/C++
.
Bogue du compilateur? Et aussi, je ne peux pas le reproduire sur MSVC, Clang et GCC – WhiZTiM